用js实现放大镜效果


Posted in Javascript onOctober 28, 2020

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

该放大区域用背景图片放大

<!DOCTYPE html>
<html lang="zh">
 <head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <meta http-equiv="X-UA-Compatible" content="ie=edge">
 <title></title>
 <style type="text/css">
 body {
 height: 1200px;
 background-color: lightskyblue;
 }

 ul {
 margin: 0;
 padding: 0;
 list-style: none;
 }

 .itemarea {
 position: relative;
 width: 500px;
 height: 680px;
 border: 1px black solid;
 margin: 50px auto;
 }

 .itemarea .pic {
 margin-bottom: 15px;
 }

 .itemarea img {
 width: 500px;
 height: 600px;

 }

 .itemarea .pic .cover {
 position: absolute;
 left: 0;
 top: 0;
 width: 200px;
 height: 200px;
 background-image: url(img/7.png);
 opacity: 0.6;
 display: none;
 }

 .itemarea .list {
 display: flex;

 }

 .itemarea .list li {
 margin: auto;
 }

 .itemarea .list img {
 display: block;
 width: 50px;
 height: 50px;
 }

 .itemarea .detail {
 position: absolute;
 top: 0;
 left: 500px;
 /* 此处为放大2倍,显示框的大小是遮阴框宽高的2倍 */
 width: 400px;
 height: 400px;
 display: none;
 border: 1px black solid;
 background: url(img/1.PNG);
 /* 此处放大2倍,背景图片的宽高是左边显示图片的2倍 */
 background-size: 1000px 1200px;
 /* background-size: 200%; 或者这样写*/

 }

 .itemarea .list .current {
 border: 2px green solid;
 }
 </style>
 </head>
 <body>
 <div class="itemarea">
 <div class="pic">
 <img src="img/1.PNG">
 <div class="cover"></div>
 </div>
 <ul class="list">
 <li><img src="img/1.PNG"></li>
 <li><img src="img/2.PNG"></li>
 <li><img src="img/3.PNG"></li>
 <li><img src="img/4.PNG"></li>
 <li><img src="img/5.PNG"></li>
 <li><img src="img/6.PNG"></li>
 </ul>
 <div class="detail">

 </div>
 </div>
 <script type="text/javascript">
 /* 
 需求
 1,鼠标放入图片时候,会动态修改图片地址
 2,鼠标放入大图,会动态修改右边图片位置
 2.1显示图片的放大镜,
 2.2显示右边效果
 */
 var itemarea = document.querySelector(".itemarea");
 var list = document.querySelector(".list");
 /* 上面的大图片 */
 img = document.querySelector(".pic img");
 /* 所有的图片 */
 imgs = list.querySelectorAll("img");
 /* 主图片展示区域 */
 pic = document.querySelector(".itemarea .pic");
 /* 放大镜 */
 cover = document.querySelector(".cover");
 /* 放大的区域 */
 detail = document.querySelector(".detail");
 /* 监听事件,切换图片src */
 list.addEventListener("mousemove", function(e) {
 if (e.target.tagName == "IMG") {
  img.src = e.target.src;
  detail.style.backgroundImage = "url(" + e.target.src + ")";
  /* 遍历 所有边框都为空*/
  imgs.forEach(function(item) {
  item.className = "";
  })
  /* 选中的改变边框颜色*/
  e.target.className = "current";
 }
 })
 pic.addEventListener("mousemove", function(e) {
 /* 放大镜距离浏览器的距离 */
 var x = e.clientX;
 y = e.clientY;
 /* 图片框距离浏览器的距离 */
 cx = pic.getBoundingClientRect().left;
 cy = pic.getBoundingClientRect().top;
 tx = x - cx - 100;
 ty = y - cy - 100;
 if (tx < 0) {
  tx = 0;
 }
 if (ty < 0) {
  ty = 0;
 }
 /* 显示图片宽-遮阴框的宽 */
 if (tx >300) {
  tx = 300;
 }
 /* 显示图片高-遮阴框的高 */
 if (ty > 400) {
  ty = 400;
 }
 cover.style.left = tx + "px";
 cover.style.top = ty + "px";
 /* 根据遮阴框在盒子的移动距离百分比------对应放映框在大图片的移动距离百分比 */
 /* tx,ty/遮阴框的极限范围 */
 detail.style.backgroundPosition = tx / 300 * 100 + "%" + ty / 400 * 100 + "%";
 })
 /* 移除隐藏 */
 itemarea.onmouseout = function() {
 cover.style.display = "none";
 detail.style.display = "none"
 }
 itemarea.onmouseover = function() {
 cover.style.display = "block";
 detail.style.display = "block";
 }
 </script>
 </body>
</html>

效果如下:

用js实现放大镜效果

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JS DOM 操作实现代码
Aug 01 Javascript
JQuery实现倒计时按钮的实现代码
Mar 23 Javascript
js图片处理示例代码
May 12 Javascript
js实现遮罩层划出效果是生成div而不是显示
Jul 29 Javascript
Javascript类型转换的规则实例解析
Feb 23 Javascript
适用于javascript开发者的Processing.js入门教程
Feb 24 Javascript
jQuery EasyUI 为Combo,Combobox添加清除值功能的实例
Apr 13 jQuery
js登录滑动验证的实现(不滑动无法登陆)
Jan 03 Javascript
Angular4学习之Angular CLI的安装与使用教程
Jan 04 Javascript
浅谈webpack+react多页面开发终极架构
Nov 11 Javascript
基于Node.js搭建hexo博客过程详解
Jun 25 Javascript
koa2+vue实现登陆及登录状态判断
Aug 15 Javascript
如何在 ant 的table中实现图片的渲染操作
Oct 28 #Javascript
WebStorm中如何将自己的代码上传到github示例详解
Oct 28 #Javascript
原生JS生成指定位数的验证码
Oct 28 #Javascript
微信小程序接入vant Weapp组件的详细步骤
Oct 28 #Javascript
Ant-design-vue Table组件customRow属性的使用说明
Oct 28 #Javascript
通过JS判断网页是否为手机打开
Oct 28 #Javascript
ant design vue嵌套表格及表格内部编辑的用法说明
Oct 28 #Javascript
You might like
人大复印资料处理程序_输入篇
2006/10/09 PHP
php生成xml简单实例代码
2009/12/16 PHP
在PHP中养成7个面向对象的好习惯
2010/01/28 PHP
PHP中return 和 exit 、break和contiue 区别与用法
2012/04/09 PHP
php解析xml方法实例详解
2015/05/12 PHP
PHP图像处理类库MagickWand用法实例分析
2015/05/21 PHP
PHP添加PNG图片背景透明水印操作类定义与用法示例
2019/03/12 PHP
JavaScript 事件参考手册
2008/12/24 Javascript
查找页面中所有类为test的结点的方法
2014/03/28 Javascript
基于jQuery实现的无刷新表格分页实例
2016/02/17 Javascript
详解用node.js实现简单的反向代理
2017/06/26 Javascript
vue2.x+webpack快速搭建前端项目框架详解
2017/11/30 Javascript
详解webpack babel的配置
2018/01/09 Javascript
解决Linux无法正常安装与卸载Node.js的方法
2018/01/19 Javascript
Vue 通过自定义指令回顾v-内置指令(小结)
2018/09/03 Javascript
vue项目中实现的微信分享功能示例
2019/01/21 Javascript
node.js中ws模块创建服务端和客户端,网页WebSocket客户端
2019/03/06 Javascript
详解ES6 Promise的生命周期和创建
2019/08/18 Javascript
JS实现“全选”和&quot;全不选&quot;功能代码实例
2020/02/06 Javascript
JavaScript实现Excel表格效果
2020/02/07 Javascript
[07:52]2014DOTA2 TI逗比武士游V社解说背后的故事
2014/07/10 DOTA
11月编程语言排行榜 Python逆袭C#上升到第4
2017/11/15 Python
python互斥锁、加锁、同步机制、异步通信知识总结
2018/02/11 Python
Python数据类型之列表和元组的方法实例详解
2019/07/08 Python
Ubuntu20.04环境安装tensorflow2的方法步骤
2021/01/29 Python
荷兰电脑专场:Paradigit
2018/05/05 全球购物
英国最大的自有市场,比亚马逊便宜:Flubit
2019/03/19 全球购物
Linux中如何用命令创建目录
2015/01/12 面试题
公司行政经理岗位职责
2013/12/24 职场文书
会议欢迎标语
2014/06/30 职场文书
2015年党风廉政建设目标责任书
2015/05/08 职场文书
付款证明格式范文
2015/06/19 职场文书
靠谱的活动总结
2019/04/16 职场文书
apache基于端口创建虚拟主机的示例
2021/04/24 Servers
Java实现斗地主之洗牌发牌
2021/06/14 Java/Android
SpringBoot集成Druid连接池连接MySQL8.0.11
2021/07/02 Java/Android