鼠标移出,遮罩层和放大的图片隐藏不见层

  需求: 用户鼠标移入出现遮罩层(即放大镜),同时右侧显现放大同样位置的图片js实现图片放大镜效果,鼠标移出,遮罩层和放大的图片隐藏不见,鼠标移动,遮罩层移动,显示大图的位置也移动。遮罩层的移动范围只限于图片的容器内部。 步骤如下: 1:首先分析布局

  实现放大镜功能要先有原图片和放大后的图片,先设置一个div大盒子,大盒子里面设置两个盒子,左边盒子的背景设置为需要放大的图片,右边的盒子放入放大后的图片,左边盒子里面放入一个小的遮罩层js实现图片放大镜效果,并设置为绝对定位,便于后续移动

  布局如下

  

  1. ![js实现图片放大镜效果_js 图片缓慢放大效果_jquery实现图片放大预览效果][1]

  style样式如下

  

  1. *{
  2. margin: 0px;padding: 0px;
  3. }
  4. .fang{
  5. }
  6. #smallImg{
  7. width: 300px;
  8. height: 300px;
  9. background: url(OIp-C.jpg) 0px 0px/cover;
  10. }
  11. #bigDiv{
  12. width: 400px;
  13. height: 400px;
  14. position: absolute;
  15. left: 300px;
  16. top: 0px;
  17. overflow: hidden;
  18. display: none;
  19. /* background-color: red; */
  20. }
  21. #bigImg{
  22. width: 1200px;
  23. height: 1200px;
  24. position: absolute;
  25. }
  26. #smallDiv{
  27. width: 100px;
  28. height: 100px;
  29. background-color: rgba(255,150, 0, 0.5);
  30. position: absolute;
  31. display: none;
  32. }

  js 图片缓慢放大效果_js实现图片放大镜效果_jquery实现图片放大预览效果

  2:分析js功能实现

  首先创建相应的节点对象

   var smallImgObj=document.getElementById('smallImg');

  1. var smallDivObj=document.getElementById('smallDiv');

  其中smallImgObj是需要放大图片的节点对象

  smallDivObj是遮罩层节点对象

  bigDivObj是右边div的节点对象

  监听事件,当鼠标移入小图片时,小方块和大图像出现

   smallImgObj.addEventListener('mouseover',function(){

  1. smallDivObj.style.display='block';
  2. bigDivObj.style.display='block';

  鼠标移出时,遮罩层和右边div方块隐藏

   smallImgObj.addEventListener('mouseout',function(){

  1. smallDivObj.style.display='none';
  2. bigDivObj.style.display='none';

  js实现图片放大镜效果_js 图片缓慢放大效果_jquery实现图片放大预览效果

  鼠标移动时,使小方块也移动 小图移动方向和大图方向相反

  核心:整个放大镜功难在在一个比列

  小div/小图=大div/大图 100/300=400/1200

  分析:尺寸大小->结论:3倍

  监听事件,当鼠标移入到小div时,触发addEventListener事件

  smallImg.addEventListener('mousemove',function(e){})

  鼠标距元素内的左上距离

   sx=e.clientX-smallImgObj.offsetLeft;

  1. sy=e.clientY-smallImgObj.offsetTop;

  遮罩层的实际移动距离

   x=sx-smallDivObj.offsetWidth/2;

  jquery实现图片放大预览效果_js 图片缓慢放大效果_js实现图片放大镜效果

  在这里要对遮罩层的位置做一下判断,如果遮罩层top,left的值超过200,0时,就需要特殊操作,也就是说设置条件不让遮罩层移入到小div外面

<p><pre> if(x>=200) x=200;

  1. if(x=200) y=200;
  2. if(y结论:3

smallImg.addEventListener('mousemove',function(e){

  1. var e = e || window.event;
  2. // console.log(e);
  3. //鼠标距元素内的左上距离
  4. sx=e.clientX-smallImgObj.offsetLeft;
  5. sy=e.clientY-smallImgObj.offsetTop;
  6. // console.log(sx,sy);
  7. //小方块的实际移动距离
  8. x=sx-smallDivObj.offsetWidth/2;
  9. y=sy-smallDivObj.offsetHeight/2;
  10. if(x>=200) x=200;
  11. if(x=200) y=200;
  12. if(y
文章由官网发布,如若转载,请注明出处:https://www.veimoz.com/1951
0 评论
1.2k

发表评论

!