尝试动手制作javascript放大镜效果

前端之家收集整理的这篇文章主要介绍了尝试动手制作javascript放大镜效果前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

本文实例为大家介绍了基于javascript实现放大镜效果的原理和代码分享给大家供大家参考,具体内容如下:

原理:

A:放大镜 B:小图片

C:大图片可视区域

D:大图片

鼠标的位置应该在放大镜的中央,所以鼠标位置为:

clientX=A.offsetLeft()+B.offsetLeft+1/2*A.offsetWidth;

clientY=A.offsetTop()+B.offsetTop+1/2*A.offsetHeight;

鼠标移动过程中:放大镜A和大图D是一起随鼠标成比例运动的,因为当放大镜A的右边框移动到与小图B的右边框重合时,大图D也应该移动到了右边框与C的右边框重合的地方,所以,他们的移动比例是:(D.offsetWidth-C.offsetWidth)/(B.offsetWidth-A.offsetWidth)=b/a

HTML部分:

放大镜<a href="https://www.jb51.cc/tag/xiaoguo/" target="_blank" class="keywords">效果</a>

js部分:

window.onload=function(){
var demo =document.getElementById('demo');
var small =document.getElementById('small');
var big =document.getElementById('big');
var glass =document.getElementById('glass')
var image =document.getElementById('big').getElementsByTagName('img')[0];
var zhezhao=document.getElementById('zhezhao');

zhezhao.onmouSEOver=function(){
glass.style.display='block'
big.style.display='block'
}
zhezhao.onmouSEOut=function(){
glass.style.display='none'
big.style.display='none'
}

//弄清楚clientX,offsetLeft,left的关系,注意区分
zhezhao.onmousemove=function(ev){
var event=ev
var left=event.clientX-demo.offsetLeft-small.offsetLeft-glass.offsetWidth/2;
var top =event.clientY-demo.offsetTop -small.offsetTop -glass.offsetHeight/2;
if(left<0){
left=0;
}else if(left>(small.offsetWidth-glass.offsetWidth)){
left=small.offsetWidth-glass.offsetWidth
}

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

var percent=(image.offsetWidth-big.offsetWidth)/(small.offsetWidth-glass.offsetWidth)

image.style.left=-percentleft+'px'
image.style.top =-percent
top+'px'

}
}

以上就是本文的全部内容,希望对大家实现javascript放大镜效果有所帮助。

原文链接:https://www.f2er.com/js/50898.html

猜你在找的JavaScript相关文章