用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 相关文章推荐
jquery 插件 人性化的消息显示
Jan 21 Javascript
HTML 自动伸缩的表格Table js实现
Apr 01 Javascript
对xmlHttp对象方法和属性的理解
Jan 17 Javascript
善用事件代理,警惕闭包的性能陷阱。
Jan 20 Javascript
JavaScript实现数字数组按照倒序排列的方法
Apr 06 Javascript
移动端JQ插件hammer使用详解
Jul 03 Javascript
AngularJS基础 ng-mouseover 指令简单示例
Aug 02 Javascript
创建简单的node服务器实例(分享)
Jun 23 Javascript
Vue中 key keep-alive的实现原理
Sep 18 Javascript
从理论角度讨论JavaScript闭包
Apr 03 Javascript
vue+element实现打印页面功能
May 20 Javascript
vue 自动化路由实现代码
Sep 03 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
PHP IE中下载附件问题解决方法
2014/01/07 PHP
PHP资源管理框架Assetic简介
2014/06/12 PHP
PHP模拟QQ登录的方法
2015/07/29 PHP
PHP快速生成各种信息提示框的方法
2016/02/03 PHP
在JQuery dialog里的服务器控件 事件失效问题
2010/12/08 Javascript
在Ubuntu上安装最新版本的Node.js
2014/07/14 Javascript
javascript+html5实现仿flash滚动播放图片的方法
2015/04/27 Javascript
js仿3366小游戏选字游戏
2016/04/14 Javascript
js监听input输入框值的实时变化实例
2017/01/26 Javascript
Javascript中prototype与__proto__的关系详解
2018/03/11 Javascript
vue裁切预览组件功能的实现步骤
2018/05/04 Javascript
angular2路由之routerLinkActive指令【推荐】
2018/05/30 Javascript
js取0-9随机取4个数不重复的数字代码实例
2019/03/27 Javascript
Flutter实现仿微信底部菜单栏功能
2019/09/18 Javascript
vue 项目打包时样式及背景图片路径找不到的解决方式
2019/11/12 Javascript
javascript实现移动端上传图片功能
2020/08/18 Javascript
详解JavaScript原型与原型链
2020/11/16 Javascript
[03:40]2014DOTA2国际邀请赛 B神专访:躲箭真的很难
2014/07/13 DOTA
[02:28]DOTA2 2015国际邀请赛中国区预选赛首日现场百态
2015/05/26 DOTA
[03:01]完美世界DOTA2联赛PWL S2 集锦第二期
2020/12/03 DOTA
Python中的defaultdict模块和namedtuple模块的简单入门指南
2015/04/01 Python
python自动zip压缩目录的方法
2015/06/28 Python
简单谈谈Python中的反转字符串问题
2016/10/24 Python
Python实现的计数排序算法示例
2017/11/29 Python
python删除某个字符
2018/03/19 Python
Python批量合并有合并单元格的Excel文件详解
2018/04/05 Python
Python 点击指定位置验证码破解的实现代码
2019/09/11 Python
python打包生成so文件的实现
2020/10/30 Python
MATCHESFASHION澳大利亚/亚太地区:英国时尚奢侈品电商
2020/01/14 全球购物
国培远程培训感言
2014/03/08 职场文书
聚美优品恶搞广告词
2014/03/14 职场文书
交通事故协议书
2014/04/15 职场文书
《称象》教学反思
2014/04/25 职场文书
护理专业毕业生自荐信
2014/06/15 职场文书
保险公司客户经理岗位职责
2015/04/09 职场文书
springcloud之Feign超时问题的解决
2021/06/24 Java/Android