一个简单的JavaScript放大镜

DOCTYPE html >
< html >

< head >
< meta charset= "UTF-8" >
< title > title >
< style type= "text/css" >
* {
margin: 0;
padding: 0;
}
img {
vertical-align: top;
}
.fdj {
width: 350px;
height: 350px;
position: relative;
margin: 0px auto;
border: 1px solid gainsboro;
}
.small {
position: relative;
}
.small img {
width: 350px;
}
.mask {
width: 100px;
height: 100px;
background: rgba( 255, 255, 0, 0.4);
position: absolute;
left: 0;
top: 0;
cursor: move;
display: none;
}
.big {
position: absolute;
top: 0;
left: -500px;
width: 500px;
height: 500px;
border: 1px solid gainsboro;
overflow: hidden;
display: none;
}
.big img {
position: absolute;
left: 0;
top: 0;
}
< / style >
head >
文章来源于网络 如有侵权请联系删除
< body >
< div class= "fdj" >
< div class= "small" >
< img src= "http://cdn.attach.qdfuns.com/notes/pics/201702/08/162503mw0fawb5b02va22i.jpg" />
< div class= "mask" > div >
div >
< div class= "big" >
< img src= "http://cdn.attach.qdfuns.com/notes/pics/201702/08/162503mw0fawb5b02va22i.jpg" />
div >
div >
body >
< script type= "text/javascript" >
var fdj = document. querySelector( '.fdj') // 获得最大的盒子
var small = document. querySelector( '.small'); //获取小图片盒子
var big = document. querySelector( '.big'); //获取大图片盒子
var bigs = big. children[ 0] //大图片
var smalls = small. children[ 0] //小图片
var mask = small. children[ 1]; //遮罩

//鼠标移入小图片盒子
small. onmouseover = function() {
//鼠标移入图片盒子将遮罩与大图片显示
mask. style. display = 'block';
big. style. display = ' block';
};

//鼠标移出小图片盒子
small. onmouseout = function() {
//鼠标移出小图片盒子将遮罩与大图片隐藏
mask. style. display = 'none';
big. style. display = 'none';
};

var x = 0;
var y = 0;
//鼠标在小图片上移动时
small. onmousemove = function( ev) {
var ev = event || window. event;
//让鼠标在遮罩正中
//鼠标X坐标与Y坐标
x = ev. clientX - this. offsetParent. offsetLeft - mask. offsetWidth / 2;
y = ev. clientY - this. offsetParent. offsetTop - mask. offsetHeight / 2;
//将遮罩限制在小图片盒子中

if ( x < 0) {
x = 0;
} else if ( x > small. offsetWidth - mask. offsetWidth) {
x = small. offsetWidth - mask. offsetWidth;
}

if ( y < 0) {
y = 0;
} else if ( y > small. offsetHeight - mask. offsetHeight) {
y = small. offsetHeight - mask. offsetHeight
}
mask. style. left = x + 'px';
mask. style. top = y + 'px';

//大图与小图的比例

/*var scalX = bigs.offsetWidth/small.offsetWidth;
var scalY = bigs.offsetHeight/small.offsetHeight;*/

var scalX = x / ( small. offsetWidth - mask. offsetWidth);
var scalY = y / ( small. offsetHeight - mask. offsetHeight);

bigs. style. left = -( x * scalX) + 'px';
bigs. style. top = -( y * scalY) + 'px';

};
< / script >


html >

你可能感兴趣的:(一个简单的JavaScript放大镜)