经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » JS/JS库/框架 » jQuery » 查看文章
6.放大镜效果
来源:cnblogs  作者:[蒙面大侠缺颗牙]  时间:2019/5/14 8:49:42  对本文有异议

一、html,css部分

二、js部分

三、源代码部分

  1. 1 <head>
  2. 2 <meta charset="UTF-8">
  3. 3 <meta name="viewport" content="width=device-width, initial-scale=1.0">
  4. 4 <meta http-equiv="X-UA-Compatible" content="ie=edge">
  5. 5 <title>Document</title>
  6. 6 <style>
  7. 7 * {
  8. 8 margin: 0px;
  9. 9 padding: 0px;
  10. 10 list-style: none;
  11. 11 }
  12. 12
  13. 13 #left {
  14. 14 display: inline-block;
  15. 15 margin: 50px 0 0 50px;
  16. 16 width: 300px;
  17. 17 height: 230px;
  18. 18 position: relative;
  19. 19 top: 125px;
  20. 20 }
  21. 21
  22. 22 #right {
  23. 23 display: inline-block;
  24. 24 width: 500px;
  25. 25 height: 400px;
  26. 26 overflow: hidden;
  27. 27 position: absolute;
  28. 28 top: 175px;
  29. 29 left: 450px;
  30. 30 display: none;
  31. 31 }
  32. 32
  33. 33 #leftSon {
  34. 34 width: 180px;
  35. 35 height: 140px;
  36. 36 border: 1px solid #666;
  37. 37 background-color: rgba(90, 90, 90, 0.45);
  38. 38 position: absolute;
  39. 39 display: none;
  40. 40 position: absolute;
  41. 41 }
  42. 42
  43. 43 #big {
  44. 44 position: absolute;
  45. 45 }
  46. 46 </style>
  47. 47 </head>
  48. 48
  49. 49 <body>
  50. 50 <div id="left">
  51. 51 <div id="leftSon"></div>
  52. 52 <img src="img/smallpic.jpg" alt="">
  53. 53 </div>
  54. 54 <div id="right">
  55. 55 <img id="big" src="img/bigpic.jpg" alt="">
  56. 56 </div>
  57. 57 <script>
  58. 58 //-----获取所需要的元素节点-----
  59. 59 var leftObj = document.getElementById('left');
  60. 60 var leftSonObj = document.getElementById('leftSon');
  61. 61 var rightObj = document.getElementById('right');
  62. 62 var bigImg = document.getElementById('big');
  63. 63 //-----显示事件-----
  64. 64 leftObj.onmouseover = function () {
  65. 65 leftSonObj.style.display = 'block';
  66. 66 rightObj.style.display = 'block';
  67. 67 }
  68. 68 //-----隐藏事件-----
  69. 69 leftObj.onmouseout = function () {
  70. 70 leftSonObj.style.display = 'none';
  71. 71 rightObj.style.display = 'none';
  72. 72 }
  73. 73 //-----移动事件-----
  74. 74 document.onmousemove = function (e) {
  75. 75 var oEvent = e || event;
  76. 76 //-----获取当前鼠标的 X,Y 坐标,
  77. 77 //-----并减去leftObj距窗口边距的距离,
  78. 78 //-----并减去leftSonObj可视宽度,高度的一半,
  79. 79 //----------------------------------------
  80. 80 //-----目的,将鼠标定在leftSonObj(透明小块)的正中间--------
  81. 81 var top = oEvent.clientY - leftObj.offsetTop - leftSonObj.offsetHeight / 2;
  82. 82 var left = oEvent.clientX - leftObj.offsetLeft - leftSonObj.offsetWidth / 2;
  83. 83 //-----判断,并将leftSonObj(透明小块)固定在他的父盒子内部------
  84. 84 if (top <= 0) {
  85. 85 top = 0
  86. 86 } else if (top >= leftObj.offsetHeight - leftSonObj.offsetHeight) {
  87. 87 top = leftObj.offsetHeight - leftSonObj.offsetHeight
  88. 88 }
  89. 89 if (left <= 0) {
  90. 90 left = 0;
  91. 91 } else if (left > leftObj.offsetWidth - leftSonObj.offsetWidth) {
  92. 92 left = leftObj.offsetWidth - leftSonObj.offsetWidth;
  93. 93 }
  94. 94 //-----获取leftSonObj(透明小块)与leftObj(他的父盒子)的长宽差值------
  95. 95 //-----并用left,top分别除以他们,获取比例(percentX)(percentY)------
  96. 96 var percentX = left / (leftObj.offsetWidth - leftSonObj.offsetWidth);
  97. 97 var percentY = top / (leftObj.offsetHeight - leftSonObj.offsetHeight);
  98. 98 //-----赋值部分-----
  99. 99 leftSonObj.style.top = top + 'px';
  100. 100 leftSonObj.style.left = left + 'px';
  101. 101 //-----获取bigImg(大图片)与rightObj(他的父盒子)的差值------
  102. 102 //-----并将他们乘以比例值(percentX)(percentY)------
  103. 103 bigImg.style.top = - percentY * (bigImg.offsetHeight - rightObj.offsetHeight) + 'px';
  104. 104 bigImg.style.left = - percentX * (bigImg.offsetWidth - rightObj.offsetWidth) + 'px';
  105. 105 }
  106. 106 </script>
  107. 107 </body>

 

原文链接:http://www.cnblogs.com/web-xpy/p/10858486.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号