复制代码 代码如下:
jsFiddleRun again Edit this fiddle Result HTML
<!DOCTYPE html>
<html>
<head>
<meta charset="gb2312" />
<title>放大镜</title>
<style>
img{ vertical-align:bottom;}
.mod_zoom{ overflow:hidden; zoom:1;}
.mod_zoom .p1 { float:left; position:relative; height:350px; width:350px; margin-right:5px; }
.mod_zoom .p1 .mask{ position:absolute; left:0; top:0; width:175px; height:175px; background-color:#fede4f; opacity:0.3; filter: alpha(opacity=30); display:none; }
.mod_zoom .p2{ position:relative; width:400px; height:400px; overflow:hidden; display:none;}
.mod_zoom .p2 .img{ position:absolute; left:0; top:0;}
.mod_zoom .ph{width:100%; height:350px; position:absolute; top:0; left:0; cursor:crosshair;
/*background-color:red*/
/*如果给它绑定事件处理函数,IE中不设置background-color属性就不触发事件*/ }
</style>
</head>
<body>
<div>
<div class="mod_zoom">
<div class="p1" id="p1">
<img src="http://img14.360buyimg.com/n1/4071/b350e77e-fc74-4173-81b5-dfe54f425ef6.jpg" id="z1" />
<span class="mask" id="m"></span>
<span class="ph" id="eventproxy"></span>
</div>
<div class="p2" id="p2">
<img src="http://img14.360buyimg.com/n0/4071/b350e77e-fc74-4173-81b5-dfe54f425ef6.jpg" class="img" id="z2" />
</div>
</div>
</div>
<script>
function PhotoZoomer(elements){
this.mask = elements.mask; //蒙版
this.container = elements.container //原图容器
this.originimg = elements.originimg; //原图
this.eventproxy = elements.eventproxy;
this.bigContainer = elements.bigContainer; //大图容器
this.bigimg = elements.bigimg; //大图
this.visible = false;
this._bind();
}
PhotoZoomer.prototype = {
display: function(style){
var self = this;
self.mask.style.display = style;
self.bigContainer.style.display = style;
},
//计算放大蒙版位置
zoom: function(clientX, clientY){
var self = this,
//位置比例
rate = {},
//放大蒙版最大活动范围
maxrange = {
offsetLeft: self.container.offsetWidth - self.mask.offsetWidth,
offsetTop: self.container.offsetHeight - self.mask.offsetHeight
},
//mask left
left = clientX - self.container.offsetLeft - self.mask.offsetWidth/2,
//mask top
top = clientY - self.container.offsetTop - self.mask.offsetHeight/2;
if(left < 0) {
left = 0;
}else if(left> maxrange.offsetLeft) {
left = maxrange.offsetLeft;
}
if(top < 0) {
top = 0;
}else if(top > maxrange.offsetTop){
top = maxrange.offsetTop;
}
//alert(maxrange.offsetTop);
rate.left = left / maxrange.offsetLeft;
rate.top = top / maxrange.offsetTop;
self.mask.style.left = left + 'px';
self.mask.style.top = top + 'px';
self.bigimg.style.left = -rate.left * (self.bigimg.offsetWidth - self.bigContainer.offsetWidth) + "px";
self.bigimg.style.top = -rate.top * (self.bigimg.offsetHeight - self.bigContainer.offsetHeight) + "px";
},
_bind: function(){
var self = this;
self.container.onmouseover = function(e){
e = e || window.event;
var target = e.targe || e.srcElement;
self.display("block");
this.visible = true;
};
self.container.onmouseout = function(e){
e = e || window.event;
var target = e.targe || e.srcElement;
self.display("none");
this.visible = false;
};
self.container.onmousemove = function(e){
e = e || window.event;
if(!this.visible )return;//防止元素大小计算错误
self.zoom(e.clientX, e.clientY);
};
}
};
function get(id){
return document.getElementById(id)
}
var elements = {
mask: get("m"),
container: get("p1"),
originimg: get("z1"),
bigContainer: get("p2"),
bigimg: get("z2"),
eventproxy: get("eventproxy")
};
var zoomer = new PhotoZoomer(elements);
// alert(elements.container.offsetParent.tagName)
</script>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset="gb2312" />
<title>放大镜</title>
<style>
img{ vertical-align:bottom;}
.mod_zoom{ overflow:hidden; zoom:1;}
.mod_zoom .p1 { float:left; position:relative; height:350px; width:350px; margin-right:5px; }
.mod_zoom .p1 .mask{ position:absolute; left:0; top:0; width:175px; height:175px; background-color:#fede4f; opacity:0.3; filter: alpha(opacity=30); display:none; }
.mod_zoom .p2{ position:relative; width:400px; height:400px; overflow:hidden; display:none;}
.mod_zoom .p2 .img{ position:absolute; left:0; top:0;}
.mod_zoom .ph{width:100%; height:350px; position:absolute; top:0; left:0; cursor:crosshair;
/*background-color:red*/
/*如果给它绑定事件处理函数,IE中不设置background-color属性就不触发事件*/ }
</style>
</head>
<body>
<div>
<div class="mod_zoom">
<div class="p1" id="p1">
<img src="http://img14.360buyimg.com/n1/4071/b350e77e-fc74-4173-81b5-dfe54f425ef6.jpg" id="z1" />
<span class="mask" id="m"></span>
<span class="ph" id="eventproxy"></span>
</div>
<div class="p2" id="p2">
<img src="http://img14.360buyimg.com/n0/4071/b350e77e-fc74-4173-81b5-dfe54f425ef6.jpg" class="img" id="z2" />
</div>
</div>
</div>
<script>
function PhotoZoomer(elements){
this.mask = elements.mask; //蒙版
this.container = elements.container //原图容器
this.originimg = elements.originimg; //原图
this.eventproxy = elements.eventproxy;
this.bigContainer = elements.bigContainer; //大图容器
this.bigimg = elements.bigimg; //大图
this.visible = false;
this._bind();
}
PhotoZoomer.prototype = {
display: function(style){
var self = this;
self.mask.style.display = style;
self.bigContainer.style.display = style;
},
//计算放大蒙版位置
zoom: function(clientX, clientY){
var self = this,
//位置比例
rate = {},
//放大蒙版最大活动范围
maxrange = {
offsetLeft: self.container.offsetWidth - self.mask.offsetWidth,
offsetTop: self.container.offsetHeight - self.mask.offsetHeight
},
//mask left
left = clientX - self.container.offsetLeft - self.mask.offsetWidth/2,
//mask top
top = clientY - self.container.offsetTop - self.mask.offsetHeight/2;
if(left < 0) {
left = 0;
}else if(left> maxrange.offsetLeft) {
left = maxrange.offsetLeft;
}
if(top < 0) {
top = 0;
}else if(top > maxrange.offsetTop){
top = maxrange.offsetTop;
}
//alert(maxrange.offsetTop);
rate.left = left / maxrange.offsetLeft;
rate.top = top / maxrange.offsetTop;
self.mask.style.left = left + 'px';
self.mask.style.top = top + 'px';
self.bigimg.style.left = -rate.left * (self.bigimg.offsetWidth - self.bigContainer.offsetWidth) + "px";
self.bigimg.style.top = -rate.top * (self.bigimg.offsetHeight - self.bigContainer.offsetHeight) + "px";
},
_bind: function(){
var self = this;
self.container.onmouseover = function(e){
e = e || window.event;
var target = e.targe || e.srcElement;
self.display("block");
this.visible = true;
};
self.container.onmouseout = function(e){
e = e || window.event;
var target = e.targe || e.srcElement;
self.display("none");
this.visible = false;
};
self.container.onmousemove = function(e){
e = e || window.event;
if(!this.visible )return;//防止元素大小计算错误
self.zoom(e.clientX, e.clientY);
};
}
};
function get(id){
return document.getElementById(id)
}
var elements = {
mask: get("m"),
container: get("p1"),
originimg: get("z1"),
bigContainer: get("p2"),
bigimg: get("z2"),
eventproxy: get("eventproxy")
};
var zoomer = new PhotoZoomer(elements);
// alert(elements.container.offsetParent.tagName)
</script>
</body>
</html>
相关推荐:
SEO阶段解析:从入门到精通,助你站稳搜索引擎的前沿,网站建设特定开发
GPT-3.5网页版:让你与人工智能零距离接触,ai英语学
用AI生成的文章算原创吗?深度解析AI写作背后的秘密
产品seo什么意思,产品seo标题是什么 ,ai模仿张宇
ChatGPT可以实现新闻报道的即时自动化生成,怎么更改ai2的图标
什么是SEO优化方案,seo的优化方案 ,ai emorobot
什么是秀米?全方位了解这款微信公众号排版神器,宁波全网营销型网站建设
SEO搜索关键词是什么意思?让你轻松网站流量的秘密!,ai颜色不对
SEO快速提升:让你的网站排名瞬间飙升的秘诀,网站建设的发展目标
GPT-3.5可以免费使用吗?AI未来的无限可能,ai烧猪
SEO观察:2025年搜索引擎优化的新趋势与机遇,seo2是什么状态
SEO优化中怎么找关键词:全面解析与实战技巧,ai2002.4.8
ChatGPT进不去怎么办?解决方案与技巧,轻松畅享智能对话,ai va
ChatGPT免费版下载:智能对话助手带来的全新体验,电脑怎么下载Ai微认证
SEO优化排名:让您的网站在搜索引擎中脱颖而出,我ai 达瓦仓决
SEO如何做?全方位解析提升网站排名的秘诀,AI翻译好处
ChatGPT与讯飞:AI语音与智能对话的完美融合,ai直角变圆角
SEO表格:优化网站排名的秘密武器,大数据推广营销费用多少
“关键词指白”:揭秘如何通过精准关键词优化实现流量暴增,全面分析网站seo
SEO优化快:如何在短时间内实现网站流量爆发,Lacey0508ai
SEO运营是什么职业,seo运营工程师招聘 ,把ai图层改横幅
打造内容创作新高度:文章扩写AI的革命性优势
文章自动生成AI:助力写作新时代,让创作更高效
ChatGPT昨晚突然不能使用,背后真相令人意想不到!,edga ai
颠覆写作方式:免费的AI续写软件助你轻松创作
ChatGPT宕机两小时,OpenAI紧急修复,用户期待AI恢复正常服务,oppo小布ai
什么是seo在线咨询,什么是seo在线咨询服务 ,unreal ai
ChatGPT界面看不到用户:隐秘的互动方式与智慧的背后,AI和UR
OpenAI智能诊断医疗-开启精准医疗新纪元,跟侯维静学ai
求一个AI软件,彻底改变你的工作与生活!
seo重点是什么,seo最重要的指标 ,ai网格怎么用
AI文章精简-高效提炼与优化你的内容创作,ai quid
“新热度”:引领潮流的力量,如何趋势的脉搏,浙江通用网站建设特点
seo要寻找什么资源,怎么找seo ,ai插画描边
优化服务网-提升客户体验,打造全方位智慧服务平台,东莞网站建设员招聘信息
乘风SEO-引领企业互联网时代的腾飞之路,南昌b站关键词排名优化贵不贵
SEO合同:确保您网站优化成功的关键保障,微博营销推广规则最新
seo要懂些什么,seo主要做什么的 ,小艾艾AI
SEO培训:助力企业实现互联网营销的无限可能,平塘网站优化推广价格
SEO占位:如何在竞争激烈的市场中占得先机?,梁平区省心全网营销推广
SEO王:掌控搜索引擎优化的至高法则,助力企业飞速腾飞,网站动作优化在哪里下载
ChatGPT怎么有梯子?突破网络限制,轻松畅享AI智能,ai对唱音响
高效创作新时代AI文案速写工具,让创作更轻松
SEO优化与SEM广告:提升品牌曝光与流量的双重利器,ai接回头
seo要公司什么资源,做seo需要用到什么软件 ,ai明星换了
《权重参谋:让您的网站轻松登顶搜索引擎的秘密武器》,设计微信社群私域营销推广简案
SEO地位:如何提升你的网站排名与曝光度,抢占市场先机,微营销网络推广
OpenArtAI如何进入:数字艺术的未来之门,分析海报ai
ChatGPT崩一次多久修复?揭秘背后的技术与保障,ai1818818
seo适合什么职业,seo有前途么 ,ai小精灵