vue图片放大镜组件,vue放大缩小组件

  vue图片放大镜组件,vue放大缩小组件

  本文主要详细介绍了利用Vue实现商品放大镜效果。本文中的示例代码非常详细,具有一定的参考价值。感兴趣的朋友可以参考一下。

  本文分享Vue实现放大镜效果的具体代码,供大家参考。具体内容如下。

  

一、前言

  在这个电商繁荣的时代,各种直播或者自主购物,我们进一步检查了自己对商品的知识和理解的细节,发现自己的商品是可以放大查看的,于是心血来潮用前端技术Vue框架写了一个类似放大镜的功能。

  

二、实现思路

  对于原图的显示空间(左),可以把原图的img改成canvas,保护图片线条。

  当跟随鼠标移动时,显示放大的指示区域(鼠标层覆盖的顶部),并且在显示层覆盖区域中选择放大的显示空间(右侧)。

  

三、效果展示

  

四、具体实现逻辑代码

  模板(记得改变图像路径)

  模板

  差异

  div class=left

  img class= leftImg src=././src/assets/curry.jpg alt= /

  !-鼠标层封面-

  div v-show= top show class= top :style= top style /div

  !-顶层用透明盖覆盖原始图像的整个空间-

  差异

  面具商店

  @mouseenter=enterHandler

  @mousemove=moveHandler

  @mouseout=outHandler

  /div

  /div

  div v-show=rShow class=right

  图片

  :style=r_img

  正确的

  src=././src/assets/curry.jpg

  alt=

  /

  /div

  /div

  /模板

  样式css

  样式范围

  /*放大图片,通过定位将左上角定位到(0,0)*/。正确{

  显示:内嵌-块;

  宽度:800px

  高度:800px

  位置:绝对;

  top:0;

  左:0;

  }/*放大右侧区域图片*/。右{

  左边距:412px

  宽度:400px

  高度:400px

  边框:1px纯红;

  位置:相对;

  溢出:隐藏;

  }/*顶层封面*/。面具商店{

  宽度:400px

  高度:400px

  位置:绝对;

  z指数:1;

  top:0;

  左:0;

  }/*图层覆盖,通过定位将左上角定位到(0,0)*/。顶部{

  宽度:200px

  高度:200px

  背景色:浅珊瑚色;

  不透明度:0.4;

  位置:绝对;

  top:0;

  左:0;

  }/*原始图像的显示*/。左侧{

  宽度:400px

  高度:400px

  显示:内嵌-块;

  }/*原图片的容器*/。左侧{

  宽度:400px

  高度:400px

  边框:1px纯色蓝绿色;

  浮动:左;

  位置:相对;

  }

  /风格

  脚本核心js

  脚本

  导出默认值{

  data() {

  返回{

  topStyle: { transform: },

  r_img: {},

  topShow:假的,

  rShow:假,

  };

  },

  方法:{

  //鼠标进入原始图像空间功能

  enterHandler() {

  //显示图层覆盖和放大的空间

  this . top show=true;

  this.rShow=true

  },

  //鼠标移动功能

  moveHandler(事件){

  //鼠标的坐标位置

  设x=event.offsetX

  设y=event.offsetY

  //图层封面左上角的坐标位置,并加以限制:不能超过原图像区域的左上角。

  设topX=x - 100 0?0:x-100;

  设topY=y - 100 0?0:y-100;

  //再次限制图层覆盖的位置,保证图层覆盖只能在原绘图区域的空间内。

  if (topX 200) {

  topX=200

  }

  if (topY 200) {

  topY=200

  }

  //通过变换移动控件

  this . top style . transform=` translate($ { topX } px,$ { topY } px)`;

  this . r _ img . transform=` translate(-$ { 2 * topX } px,-$ { 2 * topY } px)`;

  },

  //鼠标移出功能

  outHandler() {

  //控制图层覆盖和放大空间的隐藏。

  this . top show=false;

  this.rShow=false

  },

  },

  };

  /脚本

  

五、总结思考

  本来我给左边的原图像容器加了三个鼠标事件,结果一直出现问题。

  1.我添加了一个覆盖鼠标区域的透明maskTop,让这个放大镜完全实现。如果不添加这个maskTop图层盖,当我的鼠标指针进入原图像区域空间时,鼠标图层盖不会随鼠标移动,而是在鼠标移动时高频振动,右侧放大的区域空间不会平滑变化。

  2.如果不添加maskTop图层覆盖,当我的鼠标移动到原图的空间时,mousemove鼠标移动事件只执行一次,好像是因为鼠标标记图层覆盖挡住了。

  3.我之前尝试过动态确定鼠标层封面的初始位置,放在mouseenter事件中。结果mouseenter事件被异常执行了很多次,就像变成了mousemove事件一样。

  我看过其他的放大镜套,都不用加masktop,顶盖,希望路过的大佬们能帮我解惑。

  这就是本文的全部内容。希望对大家的学习有帮助,支持我们。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: