jquery实现放大镜简洁代码(推荐)
程序员文章站
2022-07-05 20:24:46
简介
网上有许多放大镜的jquery的插件,但是用着不是那么得心应手,现在一页代码实现一个放大镜功能,如果需要附加的功能可以手动修改,原理都在注释里
<...
简介
网上有许多放大镜的jquery的插件,但是用着不是那么得心应手,现在一页代码实现一个放大镜功能,如果需要附加的功能可以手动修改,原理都在注释里
<!doctype html> <html> <head> <meta charset="utf-8"> <title>放大镜效果</title> <style type="text/css"> * { margin: 0; padding: 0; } .small { margin-left:40px; margin-top:50px; width: 150px; height: 150px; /*border: 2px solid yellow;*/ } .small>img { width: 150px; height: 150px; } .slider { width: 50px; height: 50px; background: rgba(180,180,135,0.3); position: absolute; display: none; } #big { //设置为固定大小; width: 200px; height: 200px; position: absolute; /* border: 2px solid red;*/ overflow: hidden; display: none; } </style> </head> <body> <!--缩略图--> <div class="small"> <img src="thumb.jpg" /> <!--放大镜,在原图不上的小块--> <div class="slider"></div> </div> <!--放大镜区域,大图,设置为none隐藏--> <div id="big"> <img id="bigimg" src="big.jpg" /> </div> even.clientx<input type="text" value="0" id="test" /><br/> even.clienty<input type="text" value="0" id="test1" /> <script type="text/javascript" src="jquery-1.7.2.min.js"></script> <script type="text/javascript"> var small = $(".small")[0]; var slider = $(".slider")[0]; var big = document.getelementbyid("big");//试一试js获取 var bigimg = document.getelementbyid("bigimg"); //让slider跟随鼠标移动.给小的方块绑定事件 $(".small").mousemove(function(e) { var even = e || event; //兼容火狐浏览器 var x = even.clientx - small.offsetleft - slider.offsetwidth/2; var y = even.clienty - small.offsettop - slider.offsetheight/2; //测试even.clientx和even.clienty $("#test").val(even.clientx); $("#test1").val(even.clienty); //水平方向的最大值 var maxx = small.clientwidth - slider.clientwidth; //竖直方向的最大值 var maxy = small.clientheight - slider.clientheight; if(x<0){ //相当于超出左侧,超出左侧时,拉回 x=0; } //超出右侧时拉回 if(x>maxx){ x = maxx; } //顶部超出 if(y<0){ y=0; } //底部超出 if(y>maxy){ y = maxy; } slider.style.top = (y+small.offsettop) + "px"; slider.style.left = (x+small.offsetleft) + "px"; //放大的图片的主要实现代码:比例计算, big.scrollleft是id=big的div中下方滚轴的位置 //由于id=big的div设置成固定大小,而图片又非常大,所以这个div就像个放大镜一样在大图上晃 //比例计算很简单,鼠标在缩略图的位置与缩略图宽高比=鼠标在大图位置与大图宽高比,现在未知数是大图鼠标的位置 big.scrollleft = x/maxx * (bigimg.clientwidth - big.clientwidth) ; big.scrolltop = y/maxy * (bigimg.clientheight -big.clientheight) ; }); //鼠标移入事件 $(".small").mouseenter(function(){ //鼠标移入到缩略图时候实现,上面出现的小的方块 $(".slider").css("display","block"); $("#big").css("top",small.offsettop+"px"); //隐藏的大图=获取左图的左边位置+宽度+10(隔开点缝隙与缩略图)+px big.style.left = small.offsetleft + small.offsetwidth + 10 + "px"; //右侧的大图区域显示出来图片 $("#big").css("display","block"); }); //移除事件 //添加鼠标移出事件,鼠标移出缩略图的时候 $(".small").mouseleave(function(){ $(".slider").css("display","none"); $("#big").css("display","none"); }); </script> </body> </html>
下载demo
...
链接: http://pan.baidu.com/s/1nvmbgb3
以上所述是小编给大家介绍的jquery实现放大镜简洁代码,希望对大家有所帮助
上一篇: requirejs按需加载angularjs文件实例
下一篇: 原生JS实现图片网格式渐显、渐隐效果