Vue第六篇:电商网站图片放大镜功能

本文参考:https://blog.csdn.net/liushi21/article/details/127497487

效果如下:

 

功能实现分解如下:

(1)商品图区域:主要是浏览图片,根据图片的url显示图片。当鼠标离开此区域时"放大镜区域"不需要显示。

(2)鼠标放大区块。主要处理两个事情:

1)mouseenter:鼠标进入时,放大镜区域根据url显示图片

2)mousemove:鼠标移动时,鼠标的遮罩块区域跟着移动,同时放大镜区域的图片跟着切换(显示遮罩块的放大效果)

(3)商品图总览:鼠标over时,切换商品图区域的url图片。

 放大效果的实现方式:

主要是通过CSS的translate方法实现的。

放大镜区域其实放着一个大图,当鼠标在商品图区域移动时,放大镜区域的大图相向移动。

代码:

1、css代码:

#page{position: relative;height: 700px;width: 1246px;left: 19.3%;top: 111px;background-color: aqua;
}/* 商品图 */
#goodsPics{width: 452px;height: 626px;background-color: blue;position: relative;top: 10px;
}/*当前所查看的图片,也即所需要局部放大查看的图片*/
.imgNow{position: relative;top: 15px;left: 37px;
}.imgNow li{display: block;float: left;height: 54px;width: 54px;margin-left: 15px;border: 2px solid transparent;
}.imgNow li:hover, #sign{border: 2px solid red;
}/* 图片放大后的div区块 */
#seeDetail{position: absolute;background-color: aliceblue;width: 600px;height: 600px;top: 0%;left: 101%;overflow: hidden;border: 2px solid #f90;background-position: 0 0;background-repeat: no-repeat;
}/* 图片放大后的div区块下的img区块 */
#seeDetail img{position: absolute;top: 0;left: 0;background-repeat: no-repeat;width: 1800px;height: 1800px;
}/* 鼠标查看区域 */
.move{position: absolute;left: 0;top: 0;width: 150px;height: 150px;cursor: move;background: rgba(142, 223, 255, 0.407);
}/* 覆盖在放大图的原图表面上的一个遮罩层 */
.topMask{width: 452px;height: 452px;position: absolute;top: 0;left: 0;z-index: 5;
}

2、home.vue代码:

<script>export default{data(){return{url: require('@/assets/images/01.jpg'),Bigurl: require('@/assets/images/01.jpg'),urlIndex: -1, //urlIndex用于图片列表中isShow: 0,cursorMask: {transform: ''},imgMove: {transform: ''},goodsImgs: [{id:0,src: require('@/assets/images/01.jpg')},{id:1,src: require('@/assets/images/02.jpg')},{id:2,src: require('@/assets/images/03.jpg')}]}},methods: {seeThis(index){this.url = this.goodsImgs[index].src;this.urlIndex = index;},move(e){var x = e.offsetX - 75;var y = e.offsetY - 75;// 防止鼠标预览区域移动到原图区域左边以外if(x < 0){x = 0;}else if(x > 300){// 防止预览区域移动到右边以外x = 300;}if(y < 0){y = 0;}else if(y > 300){y = 300;}this.cursorMask.transform = `translate(${x}px, ${y}px)`;this.imgMove.transform = `translate(-${4*x}px, -${4*y}px)`;},seeBegin(){this.Bigurl = this.url;this.isShow = 1;},seeEnd(){this.Bigurl = "";this.left = 0;this.top = 0;this.isShow = 0;}}}
</script><template><div id="goodsPics"><!-- 当前查看商品图区域 --><div id="imgPre" style="position: relative;" @mouseleave="seeEnd"><div ref="imgPre"><img :src="url" alt="picNow"></div><div class="topMask" @mouseenter="seeBegin($event)" @mousemove="move($event)"><!-- 鼠标放大镜模块 --><div ref="move" v-show="isShow" class="move" :style="cursorMask"></div></div><!-- 商品图总览,就是一排的小图 --><ul class="imgNow"><li v-for="(item, index) in goodsImgs" :key="item.id" @mouseover="seeThis(index)" :id="urlIndex == index ? sign : ''"><img style="width: 54px; height: 54px;" :src="item.src" alt="pics"></li></ul><!-- 放大镜区域,查看商品图放大后的效果 --><div v-if="isShow" id="seeDetail" ref="bigImg"><img :src="Bigurl" alt="" :style="imgMove"></div></div></div>
</template><style scoped></style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/5576.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ES6解构对象、数组、函数传参

目录 1.对象解构 2.对象解构的细节处理 2.1.解构的值对象中不存在时 2.2.给予解构值默认参数 2.3.非同名属性解构 3.数组解构 3.1基础解构语法 3.2数组嵌套解构 4.函数解构传参 5.解构小练习 在ES6的新语法中新增了解构的方法&#xff0c;它可以让我们很方便的从数组或…

每天五分钟机器学习:多项式非线性回归模型

本文重点 在前面的课程中,我们学习了线性回归模型和非线性回归模型的区别和联系。多项式非线性回归模型是一种用于拟合非线性数据的回归模型。与线性回归模型不同,多项式非线性回归模型可以通过增加多项式的次数来适应更复杂的数据模式。在本文中,我们将介绍多项式非线性回…

关于Arduino IDE库文件存放路径问题总结(双版本)

在开发过程中,如果不注意,库文件存放路径很乱,如果在转移系统环境时,容易忘记备份。编译过程中出现多个可用引用包的位置,为了解决这些问题,要明白各文件夹的默认路径在哪,区别在哪,如有了解不对的地方请指正。 IDE安装目录(默认C盘,自定义可以其他盘符下)IDE升级可…

IDEA如何打包springboot成jar包,并运行、停止、重启,本地依赖不能打包怎么办

1、将springboot项目打包成jar 第一步 这里要注意依赖的包的导入&#xff0c;有pom.xml中网络依赖导入&#xff0c;有的包是本地依赖导入&#xff0c;本地依赖的包只需在pom.xml加入一下代码即可&#xff01; <dependency><groupId>jacob</groupId>//名称…

eclipse中经常遇到的maven相关的问题

maven工程依赖的jar包无法部署到tomcat中 右键maven工程&#xff0c;选择“属性” 将工程在tomcat重新发布即可。 2、Update Project or use Quick Fix maven工程总是提示更新&#xff0c;一更新java版本又回到1.5 在pom.xml添加如下&#xff1a; <build><finalN…

rabbitmq是什么?rabbitmq安装、原理、部署

rabbitmq是什么&#xff1f; MQ的全称是Messagee Queue&#xff0c;因为消息的队列是队列&#xff0c;所以遵循FIFO 先进先出的原则是上下游传递信息的跨过程通信机制。 RabbitMQ是一套开源&#xff08;MPL&#xff09;新闻队列服务软件由 LShift 提供的一个 Advanced Messag…

量子计算机操作系统介绍

下载&#xff1a;https://m.originqc.com.cn/zh 为量子计算编程而生的一站式学习与开发平台&#xff0c;提供量子编程开发环境&#xff0c;支持量子计算资源随时调用&#xff0c;支持量子应用打开即用。 产品特点 无需安装配置 PilotOS客户端集成量子编程开发环境所需的Pyt…

前端对后端路径的下载//流文件下载

1.前端对后端路径的下载 2.流文件下载

【git基本使用】

初识git 一、git安装 1.1 Linux-centos 如果你的的平台是centos&#xff0c;安装git相当简单&#xff0c;以我的centos7.6为例&#xff1a; ⾸先&#xff0c;你可以试着输⼊Git&#xff0c;看看系统有没有安装Git&#xff1a; git-bash: git: command not found 出现像上⾯…

MYSQL练习一答案

练习1答案 构建数据库 数据库 数据表 answer开头表为对应题号答案形成的数据表 表结构 表数据 答案&#xff1a; 1、查询商品库存等于50的所有商品&#xff0c;显示商品编号&#xff0c;商 品名称&#xff0c;商品售价&#xff0c;商品库存。 SQL语句 select good_no,good…

【树上操作】定长裁剪 CF1833 G

Problem - G - Codeforces 题意&#xff1a; 给定一棵n个节点的树&#xff0c;请你减掉一些边&#xff0c;使得剪掉后的每个树只有三个节点&#xff0c; 如果可以&#xff0c;第一行返回减掉边的数量&#xff0c;第二行返回减掉边的编号&#xff1b;如果无解&#xff0c;输出…

Redis的内存回收与内存淘汰策略

对于redis这样的内存型数据库而言&#xff0c;如何删除已过期的数据以及如何在内存满时回收内存是一项很重要的工作。 常见的redis内存回收的工作主要分为两个方面&#xff1a; 清理过期的key在内存不足时回收到足够的内存用以存储新的key 清理过期的key 我们很少在redis中…

Cesium态势标绘专题-普通点(标绘+编辑)

标绘专题介绍:态势标绘专题介绍_总要学点什么的博客-CSDN博客 入口文件:Cesium态势标绘专题-入口_总要学点什么的博客-CSDN博客 辅助文件:Cesium态势标绘专题-辅助文件_总要学点什么的博客-CSDN博客 本专题没有废话,只有代码,代码中涉及到的引入文件方法,从上面三个链…

[golang gin框架] 40.Gin商城项目-微服务实战之Captcha验证码微服务

本次内容需要 gin框架基础知识, golang微服务基础知识才能更好理解 一.Captcha验证码功能引入 在前面,讲解了微服务的架构等,这里,来讲解前面商城项目的 Captcha验证码 微服务 ,captcha验证码功能在前台,后端 都要用到 ,可以把它 抽离出来 ,做成微服务功能 编辑 这个验证码功能…

《零基础入门学习Python》第063讲:论一只爬虫的自我修养11:Scrapy框架之初窥门径

上一节课我们好不容易装好了 Scrapy&#xff0c;今天我们就来学习如何用好它&#xff0c;有些同学可能会有些疑惑&#xff0c;既然我们懂得了Python编写爬虫的技巧&#xff0c;那要这个所谓的爬虫框架又有什么用呢&#xff1f;其实啊&#xff0c;你懂得Python写爬虫的代码&…

20 QTreeWidget控件

代码&#xff1a; //treeWidget树控件//1&#xff1a;设置头部标签 QStringList()匿名对象创建ui->treeWidget->setHeaderLabels(QStringList()<<"英雄"<<"英雄介绍");//2&#xff1a;设置itemQTreeWidgetItem * liItem new QTreeWidg…

Linux 系统中异常与中断

文章目录 异常与中断的关系中断的处理流程异常向量表Linux 系统对中断的处理ARM 处理器程序运行的过程程序被中断时&#xff0c;怎么保存现场Linux 系统对中断处理的演进Linux 对中断的扩展&#xff1a;硬件中断、软件中断硬件中断软件中断 中断处理原则&#xff1a;耗时中断的…

【面试题】万字总结MYSQL面试题

Yan-英杰的主页 悟已往之不谏 知来者之可追 C程序员&#xff0c;2024届电子信息研究生 目录 1、三大范式 2、DML 语句和 DDL 语句区别 3、主键和外键的区别 4、drop、delete、truncate 区别 5、基础架构 6、MyISAM 和 InnoDB 有什么区别&#xff1f; 7、推荐自增id作为…

【C++】STL---list基本用法介绍

个人主页&#xff1a;平行线也会相交&#x1f4aa; 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 平行线也会相交 原创 收录于专栏【C之路】&#x1f48c; 本专栏旨在记录C的学习路线&#xff0c;望对大家有所帮助&#x1f647;‍ 希望我们一起努力、成长&…

Kotlin基础(七):数据类和封闭类

前言 本文主要讲解kotlin数据类&#xff08;DataClass&#xff09;和封闭类&#xff08;SealedClasses&#xff09;&#xff0c;包括使用数据类&#xff0c;对象复制&#xff0c;数据类成员的解构&#xff0c;使用封闭类&#xff0c;以及数据类和封闭类在Android开发中的应用。…