js实现放大镜的效果
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>放大镜</title>
<style>
*{
margin:0px;
padding:0px;
}
#box{
430px;
height:430px;
margin:100px;
margin-left:17%;
position:relative;//这里使用相对定位,好让其他的元素能依靠这个元素定位
}
#move{
background-color:green;
220px;
height:220px;
position:absolute;
left:0px;
top:0px;
display:none;//先让他隐藏,用js使其显示
}
#bimg{
430px;
height:430px;
overflow:hidden;
position:absolute;
top:0px;
left:450px;
display:none;//先让他隐藏,用js使其显示
}
#bimg img{
800px;
height:800px;
position:absolute;
top:0px;
left:0px;
}
</style>
</head>
<body onload="bigimg()">
<div ;
}
}
</script>
</body>
</html>
黑色箭头:
1
2
|
var x = e.clientX; //鼠标相对于视口的位置
var y = e.clientY;
|
红色箭头:
1
2
|
var t = bbox.offsetTop; //box相对于视口的位置
var l = bbox.offsetLeft;
|
橙色箭头:
1
2
|
var _left = x - l - bmove.offsetWidth/2; //计算move的位置
var _top = y - t -bmove.offsetHeight/2;
|
2、bimg块的计算
利用move块在可移动范围内的比例来设置大图的位置
move块的移动范围:
1
|
bbox.offsetWidth-bmove.offsetWidth |
move块现在的坐标占可移动范围的比例:
1
2
|
var w = _left/(bbox.offsetWidth-bmove.offsetWidth); //计算移动的比例
var h = _top/(bbox.offsetHeight-bmove.offsetHeight);
|
bimg的移动范围:
1
|
b_bimg.offsetHeight-bbimg.offsetHeight |
bimg的位置:
1
2
|
var b_bimg_top = (b_bimg.offsetHeight-bbimg.offsetHeight)*h; //计算大图的位置
var b_bimg_left = (b_bimg.offsetWidth-bbimg.offsetWidth)*w;
|