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,一经查实,立即删除!

相关文章

flink消费kafka数据,按照指定时间开始消费

kafka中根据时间戳开始消费数据 package com.cindasc.rtasset.source;import com.cindasc.rtasset.util.Constants; import org.apache.flink.api.java.utils.ParameterTool; import org.apache.flink.connector.kafka.source.enumerator.initializer.OffsetsInitializer; imp…

《论文阅读》FADO:情感支持对话的反馈感知的双向控制网络 Knowledge Based System 2023.2

《论文阅读》FADO:情感支持对话的反馈感知的双向控制网络 前言简介问题定义模型框架图Context EncoderDual-level Feedback Strategy SelectorStrategy SelectionDual-level FeedbackDouble Control ReaderStrategy DictionaryResponse Generator损失函数问题前言 你是否也对…

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

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

大数据_面试_ETL组件常见问题_sparkflink

问题列表回答spark与flink的主要区别flink cdc如何确保幂等与一致性Flink SQL CDC 实践以及一致性分析-阿里云开发者社区spark 3.0 AQE动态优化hbase memorystore blockcachesparksql如何调优通过webui定位那个表以及jobid,jobid找对应的执行计划hdfs的常见的压缩算法hbase的数…

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

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

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

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

每日一题 Leetcode-1499满足不等式的最大值

1499. 满足不等式的最大值 给你一个数组 points 和一个整数 k 。数组中每个元素都表示二维平面上的点的坐标&#xff0c;并按照横坐标 x 的值从小到大排序。也就是说 points[i] [xi, yi] &#xff0c;并且在 1 < i < j < points.length 的前提下&#xff0c; xi <…

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…

神经网络小记-过拟合与欠拟合

过拟合 过拟合&#xff08;Overfitting&#xff09;是机器学习和深度学习中常见的问题&#xff0c;指模型在训练数据上表现得非常好&#xff0c;但在新数据上表现较差&#xff0c;即模型过度拟合了训练数据的特征&#xff0c;导致泛化能力不足。 解决过拟合的方式包括以下几种…

Jira、Confluence数据迁移

Jira、Confluence的数据迁移 jira简单来说就是缺陷跟踪、客户服务、需求收集、流程审批、任务跟踪、项目跟踪和敏捷管理的系统&#xff01;&#xff01;&#xff01;confluence用来共享信息、文档协作、集体讨论&#xff0c;信息推送&#xff01;&#xff01;&#xff01;这段…

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

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验证码功能在前台,后端 都要用到 ,可以把它 抽离出来 ,做成微服务功能 编辑 这个验证码功能…