6.放大镜.js 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. var small = document.getElementById("small");
  2. var drag = document.getElementById("drag");
  3. var big = document.getElementById("big");
  4. var bigImg = document.getElementById("bigImg");
  5. small.onmouseover = function() {
  6. drag.style.display = 'block';
  7. big.style.display = 'block';
  8. }
  9. small.onmouseout = function() {
  10. drag.style.display = 'none';
  11. big.style.display = 'none';
  12. }
  13. small.onmousemove = function(e) {
  14. var smallLeft = e.clientX - drag.offsetWidth / 2;
  15. var smallTop = e.clientY - drag.offsetHeight / 2;
  16. drag.style.left = smallLeft + 'px';
  17. drag.style.top = smallTop + 'px';
  18. if(drag.offsetLeft <= 0) {
  19. drag.style.left = 0;
  20. }
  21. if(drag.offsetTop <= 0) {
  22. drag.style.top = 0;
  23. }
  24. // 遮罩层最大移动距离
  25. var left1 = small.offsetWidth - drag.offsetWidth;
  26. var top1 = small.offsetHeight - drag.offsetHeight;
  27. if(drag.offsetLeft > left1) {
  28. drag.style.left = left1 + 'px';
  29. }
  30. if(drag.offsetTop > top1) {
  31. drag.style.top = top1 + 'px';
  32. }
  33. var x = drag.offsetLeft / left1;
  34. var y = drag.offsetTop / top1;
  35. // 大图可移动距离
  36. var bigLeft = bigImg.offsetWidth - big.offsetWidth;
  37. var bigTop = bigImg.offsetHeight - big.offsetHeight;
  38. bigImg.style.left = -bigLeft * x + 'px';
  39. bigImg.style.top = -bigTop * y + 'px';
  40. }