用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 相关文章推荐
JavaScript基本编码模式小结
May 23 Javascript
Dom 学习总结以及实例的使用介绍
Apr 24 Javascript
javascript处理表单示例(javascript提交表单)
Apr 28 Javascript
jq给页面添加覆盖层遮罩的实例
Feb 16 Javascript
详解vue slot插槽的使用方法
Jun 13 Javascript
Js中async/await的执行顺序详解
Sep 22 Javascript
React 路由懒加载的几种实现方案
Oct 23 Javascript
VUE搭建手机商城心得和遇到的坑
Feb 21 Javascript
Layui 解决表格异步调用后台分页的问题
Oct 26 Javascript
JavaScript实现简单随机点名器
Nov 21 Javascript
原生JS实现留言板
Mar 26 Javascript
关于JavaScript数组去重的一些理解汇总
Sep 10 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
解决GD中文乱码问题
2007/02/14 PHP
php算开始时间到过期时间的相隔的天数
2011/01/12 PHP
PHP实现获取图片颜色值的方法
2014/07/11 PHP
PHP扩展模块memcached长连接使用方法分析
2014/12/24 PHP
composer.lock文件的作用
2016/02/03 PHP
PHP目录操作实例总结
2016/09/27 PHP
Redis在Laravel项目中的应用实例详解
2017/08/11 PHP
JavaScript 中的事件教程
2007/04/05 Javascript
CSS鼠标响应事件经过、移动、点击示例介绍
2013/09/04 Javascript
在页面中js获取光标/鼠标的坐标及光标的像素坐标
2013/11/11 Javascript
jquery中val()方法是从最后一个选项往前读取的
2015/09/06 Javascript
JS实现PC手机端和嵌入式滑动拼图验证码三种效果
2017/02/15 Javascript
js禁止Backspace键使浏览器后退的实现方法
2017/09/01 Javascript
vue项目tween方法实现返回顶部的示例代码
2018/03/02 Javascript
解决Layui数据表格中checkbox位置不居中的方法
2018/08/15 Javascript
JS二级菜单不同实现方法分析【4种方法】
2018/12/21 Javascript
微信小程序页面传多个参数跳转页面的实现方法
2019/05/17 Javascript
javascript实现动态时钟的启动和停止
2020/07/29 Javascript
vue页面切换项目实现转场动画的方法
2019/11/12 Javascript
matplotlib绘图实例演示标记路径
2018/01/23 Python
Python3实现带附件的定时发送邮件功能
2020/12/22 Python
pyqt5 禁止窗口最大化和禁止窗口拉伸的方法
2019/06/18 Python
django连接oracle时setting 配置方法
2019/08/29 Python
nginx+uwsgi+django环境搭建的方法步骤
2019/11/25 Python
HTML5 微格式和相关的属性名称
2010/02/10 HTML / CSS
Html5饼图绘制实现统计图的方法
2020/08/05 HTML / CSS
世界最大的海报和艺术印刷商店:AllPosters.com
2017/02/01 全球购物
GOOD AMERICAN官网:为曲线性感而设计
2017/12/28 全球购物
日本航空官方网站:JAL
2019/06/19 全球购物
程序运行正确, 但退出时却"core dump"了,怎么回事
2014/02/19 面试题
业务员岗位职责范本
2013/12/15 职场文书
优秀本科生求职推荐信
2014/02/24 职场文书
公司业务员岗位职责
2014/03/18 职场文书
护士工作失误检讨书
2014/09/14 职场文书
工厂标语大全
2014/10/06 职场文书
2014年化妆品销售工作总结
2014/12/01 职场文书