实现效果:
所用图片:
代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>放大镜效果</title>
<meta name="author" content="鬼眼邪神"/>
<meta name="description" content="鬼眼邪神的博客,http://cyg7561.blog.163.com/"/>
<style>
* {
margin:0;
padding:0;
}
.magnify {
float:left;
}
.left {
float:left;
position:relative;
width:190px;
height:240px;
border:5px solid #000;
}
.left img {
display:block;
width:190px;
height:240px;
}
.left div {
position:absolute;
top:0;
left:0;
display:none;
width:100px;
height:100px;
background:rgb(0,200,200);
cursor:move;
opacity:0.4;
filter:alpha(opacity=40);
}
.right {
display:none;
position:absolute;
top:0;
left:220px;
width:300px;
height:300px;
border:1px solid #000;
overflow:hidden;
}
.right img {
display:block;
width:570px;
height:720px;
}
</style>
<script>
window.οnlοad=function(){
var left=document.getElementById("left");
var move=document.getElementById("move");
var right=document.getElementById("right");
left.οnmοusemοve=function(event){
var event=window.event||event;
//让滤镜和右边的大图进行显示
move.style.display="block";
right.style.display="block";
//获取滤镜相对于父元素的坐标,并使鼠标在滤镜中始终居中显示
var moveLeft=event.clientX-move.offsetWidth/2-left.offsetLeft-left.clientLeft;
var moveTop=event.clientY-move.offsetHeight/2-left.offsetTop-left.clientTop;
//获取滤镜的移动范围
var moveRangeWidth=left.clientWidth-move.offsetWidth;
var moveRangeHeight=left.clientHeight-move.offsetHeight;
//判断临界值
if (moveLeft<=0){
moveLeft=0;
}else if(moveLeft>=moveRangeWidth){
moveLeft=moveRangeWidth;
}
if (moveTop<=0){
moveTop=0;
}else if (moveTop>=moveRangeHeight){
moveTop=moveRangeHeight;
}
//让鼠标带着小块移动
move.style.left=moveLeft+"px";
move.style.top=moveTop+"px";
//放大镜效果
right.scrollLeft=moveLeft*3;
right.scrollTop=moveTop*3;
}
left.οnmοuseοut=function(){
right.style.display="none";
}
}
</script>
</head>
<body>
<div class="magnify">
<div class="left" id="left">
<img src="girl.jpg" alt="" id="leftImg"/>
<div id="move">
</div>
</div>
<div class="right" id="right">
<img src="girl.jpg" alt="" id="rightImg"/>
</div>
</div>
</body>
</html>