layui鼠标放上图片局部放大_基于 Vue 的商品主图放大镜方案

本文介绍了一种基于Vue的图片放大镜实现方法,适用于电商应用的商品主图展示。通过计算小图和大图的比例关系,动态调整大图位置,达到鼠标悬停局部放大的效果。详细介绍了核心代码实现,包括HTML、JS和CSS,并提供了不同场景下的效果展示。
摘要由CSDN通过智能技术生成

扫码关注公众号「政采云前端团队」,获取更多不掺水的原创好文~

4877d100a3aa013e94ce7237ef24e76b.png
9bbef567b273310875150277c1f7428a.png

前言

在做电商类应用时,难免会遇到商品主图实现放大镜效果的场景,现有的基于 Vue 的第三方包不多并且无法直接复用,今天,我来分享一种高鲁棒性的基于 Vue 的图片放大镜方法。

实现原理

放大镜的原理用一句话概括,就是根据小图上的鼠标位置去定位大图。

图 1 原理图(以 2 倍放大为例)

696645570b0a2e154685abf27a5ab7f9.png

相信原理图已经画的很明白了,图中,左侧框是小图框,其蓝色区域为图片遮罩层(需放大区域),右侧框是整个大图目前所在区域,其蓝色区域是放大区域,设置超出隐藏,就实现了放大遮罩区域的效果。

显然,两块蓝色区域存在着某种对应关系,即遮罩的左上角位置(相对于小图,以下称 X 坐标)和放大区域(相对于大图)的左上角位置是成比例的,即放大倍数。计算出 X 坐标后,适当调整背景图的位置,使大图向反方向移动 scale 倍的 X 坐标即可。

X 坐标为(maskX,maskY),以计算 maskX 为例:

鼠标移动中会产生 e.clientX,标识鼠标与浏览器左侧的距离,小图与浏览器左侧的距离是 left ,由于遮罩始终是一个以鼠标为中心的正方形,所以:

maskX = e.clientX - left - mask/2

同理,

maskY = e.clientY - top - mask/2

大图的对应样式设置为:

{  left: - maskX * scale + 'px';  top: - maskY * scale + 'px';}

效果演示

图 2 长图展示

ed37c0bfa44673e928b17760f85c0829.png

图 3 宽图展示

bb0d945e5deb552190f986fa9ccde0fd.png

图 4 两倍放大效果图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值