Javascript仿京东放大镜的效果
随便找一个图片吧。小伙伴们,想怎么玩就怎么玩(注意路径),亲自测试,绝对没问题。
话不多说,请看代码:
<html>
<head>
<metacharset="utf-8">
<styletype="text/css">
body,div{margin:0;padding:0;}
#zhuti{
margin:50px;
position:relative;
}
#small{
width:300px;
height:187px;
border:1pxsolid#000;
}
#big{
border:1pxsolid#666;
overflow:hidden;
width:300px;
height:187px;
position:absolute;
left:310px;
top:0px;
display:none;/*默认隐藏*/
}
#jingtou{
width:50px;
height:50px;
background:#666;
opacity:0.4;
position:absolute;
display:none;/*默认隐藏*/
}
#bigimg{
position:absolute;
}
</style>
</head>
<body>
<divid="zhuti">
<divid="small">
<divid="jingtou"></div>
<imgsrc="img/ktm_small.jpg">
</div>
<divid="big">
<imgsrc="img/ktm_big.jpg"id="bigimg">
</div>
</div>
<scripttype="text/JavaScript">
//封装一个函数(id形式参数)
function$(id){
returndocument.getElementById(id);
}
varsmall=$('small');
varbig=$('big');
varjingtou=$('jingtou');
varzhuti=$('zhuti');
varbigimg=$('bigimg');
//监视鼠标(镜头)
small.onmouseover=function(){
big.style.display='block';
jingtou.style.display='block';
}
small.onmouseout=function(){
big.style.display='none';
jingtou.style.display='none';
}
//挡鼠板移动的时候
small.onmousemove=function(event){
//获得当前坐标//减去镜头宽度的一半
varleft=event.clientX-zhuti.offsetLeft-jingtou.offsetWidth/2;
vartop=event.clientY-zhuti.offsetTop-jingtou.offsetHeight/2;
//进行判断语句(固定0的位置)
//向左走
if(left<=0){
left=0;
}
//向上走
if(top<=0){
top=0;
}
//向右走
if(left>=small.offsetWidth-jingtou.offsetWidth){
left=small.offsetWidth-jingtou.offsetWidth;
}
//向下走
if(top>=small.offsetHeight-jingtou.offsetHeight){
top=small.offsetHeight-jingtou.offsetHeight;
}
//小图的比例
varsmallX=left/(small.offsetWidth-jingtou.offsetWidth);
//varsmallX=left/(small.offsetWidth-jingtou.offsetWidth);
varsmallY=top/(small.offsetHeight-jingtou.offsetHeight);
//varsmallY=top/(small.offsetHeight-jingtou.offsetHeight);
varbigX=-smallX*(bigimg.offsetWidth-big.offsetWidth);
varbigY=-smallY*(bigimg.offsetHeight-big.offsetHeight);
//求a和b的值
bigimg.style.left=bigX+'px';
bigimg.style.top=bigY+'px';
//镜头距离左边的位置==鼠标距离左边的位置
jingtou.style.left=left+'px';
jingtou.style.top=top+'px';
}
</script>
</body>
</html>
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持毛票票!
