js放大镜代码
js原生放大镜
<!DOCTYPE html> <html> <head> <title>放大镜</title> <meta charset="utf-8"> <style type="text/css"> *{ margin: 0px; padding: 0px; } body{ width: 960px; margin:40px auto; } #small{ width: 300px; height: 200px; border:1px solid #eee; border-radius: 4px; position: relative; } #small img{ width: 100%; height: 100%; } div { float: left; margin-right: 10px; } #big{ width: 300px; height: 200px; overflow: hidden; position: relative; border:1px solid #eee; border-radius: 4px; display: none; } #look_girl{ position: absolute; left: 0px; top:0px; } #move{ width: 100px; height: 100px; background:#000; opacity: .5; position: absolute; display: none; left: 0px; top: 0px; } </style> </head> <body> <div id="small"> <img src="1.png"> <p id="move"></p> </div> <div id="big"> <img src="1.png" id="look_girl"> </div> </body> <script type="text/javascript"> var move = document.getElementById('move'); var small = document.getElementById('small'); var big = document.getElementById('big'); var look_girl = document.getElementById('look_girl'); small.onmousemove = function(event){ event = event || window.event; this.style.cursor = 'move'; // 计算move移动块的left值 var move_left = event.clientX - this.offsetLeft - move.offsetWidth/2; // 计算move移动块的top值 var move_top = event.clientY - this.offsetTop - move.offsetHeight/2; // 超出左边界赋值为0 move_left = move_left < 0 ? 0 : move_left; // 超出右边界赋值为盒子宽度-移动块的宽度 move_left = move_left > this.offsetWidth - move.offsetWidth ? this.offsetWidth - move.offsetWidth : move_left; // 超出上边界赋值为0 move_top = move_top < 0 ? 0 : move_top; // 超出下边界赋值为盒子高度-移动块高度 move_top = move_top > this.offsetHeight - move.offsetHeight ? this.offsetHeight - move.offsetHeight : move_top; // 修改移动块left、top值 move.style.left = move_left + 'px'; move.style.top = move_top + 'px'; /* 计算图片需要移动的坐标 距离左边left 图片宽度 盒子宽度 距离左边left 图片宽度 盒子宽度 big_x/(look_girl.offsetWidth-big.offsetWidth) = move_left/(small.offsetWidth-move.offsetWidth); big_y/(look_girl.offsetHeight-big.offsetHeight) = move_top/(small.offsetHeight-move.offsetHeight); */ var big_x = move_left/(small.offsetWidth-move.offsetWidth) * (look_girl.offsetWidth-big.offsetWidth); var big_y = move_top/(small.offsetHeight-move.offsetHeight) * (look_girl.offsetHeight-big.offsetHeight); // 修改图片定位 look_girl.style.left = -big_x + 'px'; look_girl.style.top = -big_y + 'px'; } small.onmouseover = function(){ move.style.display = 'block'; big.style.display = 'block'; } small.onmouseout = function(){ move.style.display = 'none'; big.style.display = 'none'; } </script> </html>
方法二更好
作者:沐禹辰
出处:http://www.cnblogs.com/renfanzi/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。
出处:http://www.cnblogs.com/renfanzi/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。