用js实现电商网站详情页放大镜特效

1、效果截图

2、html代码

<div id="#demo">
<div id="small_box">
<div id="float_box"></div>
<img src="small.jpg" />
</div>
<div id="big_box">
<img src="big.jpg" />
</div>
</div>

3.css样式

*{margin: 0;padding: 0;}
#demo{display: block;width: 400px;height:366px;margin: 50px ;position: relative;border: 1px solid #ccc;}
#small_box{position: relative;z-index: 1;}
#float_box{display: none;width: 160px;height: 120px;position: absolute;background: #ffffcc;border: 1px solid #CCCCCC;filter: alpha(opacity = 50)/*透明度*/;opacity: .5;cursor: move;}
#big_box{display: none;position: absolute;top: 0;left: 460px;width: 400px;height: 300px;overflow: hidden;border: #CCCCCC solid 1px;}
#big_box img{position: absolute;z-index: 1;}

4.js代码

<script type="text/javascript">
window.onload = function(){
var objDemo = document.getElementById("demo");
var objSmallBox = document.getElementById("small_box");
var objFloatBox = document.getElementById("float_box");
var objBigBox = document.getElementById("big_box");
var objBigBoxImage = objBigBox.getElementsByTagName("img")[0];

objSmallBox.onmouseover = function(){
objFloatBox.style.display = "block";
objBigBox.style.display = "block";
}

objSmallBox.onmouseout = function(){
objFloatBox.style.display = "none";
objBigBox.style.display = "none";
}

objSmallBox.onmousemove = function(ev){
var _event = ev;
var left = _event.clientX - objDemo.offsetLeft - objSmallBox.offsetLeft - objFloatBox.offsetWidth/2;
var top = _event.clientY - objDemo.offsetTop - objSmallBox.offsetTop - objFloatBox.offsetHeight/2;

if(left < 0){
left = 0;
}else if(left > (objSmallBox.offsetWidth - objFloatBox.offsetWidth)){
left = objSmallBox.offsetWidth - objFloatBox.offsetWidth;
}
if(top < 0){
top = 0;
}else if(top > (objSmallBox.offsetHeight - objFloatBox.offsetHeight)){
top = objSmallBox.offsetHeight - objFloatBox.offsetHeight;
}

objFloatBox.style.left = left +"px";
objFloatBox.style.top = top + "px";

var percentX = left / (objSmallBox.offsetWidth - objFloatBox.offsetWidth);
var percentY = top / (objSmallBox.offsetHeight - objFloatBox.offsetHeight);

objBigBoxImage.style.left = -percentX * (objBigBoxImage.offsetWidth - objBigBox.offsetWidth) + "px";
objBigBoxImage.style.top = -percentY * (objBigBoxImage.offsetHeight - objBigBox.offsetHeight) + "px";
// console.log(objBigBoxImage.style.top);

}

}
</script>

 

转载于:https://www.cnblogs.com/hjw2016/p/5324192.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值