用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 相关文章推荐
国外Lightbox v2.03.3 最新版 下载
Oct 17 Javascript
Dom在ajax技术中的作用说明
Oct 25 Javascript
两个listbox实现选项的添加删除和搜索
Mar 01 Javascript
JavaScript获得页面base标签中url的方法
Apr 03 Javascript
AngularJS基础学习笔记之指令
May 10 Javascript
jQuery实现垂直半透明手风琴特效代码分享
Aug 21 Javascript
jQuery用FormData实现文件上传的方法
Nov 21 Javascript
Vue.js中轻松解决v-for执行出错的三个方案
Jun 09 Javascript
vue组件父子间通信之综合练习(聊天室)
Nov 07 Javascript
从0到1搭建element后台框架优化篇(打包优化)
May 12 Javascript
Vue利用Blob下载原生二进制数组文件
Sep 25 Javascript
如何利用node转发请求详解
Sep 17 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 导出数据到淘宝助手CSV的方法分享
2010/02/27 PHP
解析CodeIgniter自定义配置文件
2013/06/18 PHP
ThinkPHP CURD方法之order方法详解
2014/06/18 PHP
PHP实现的文件上传类与用法详解
2017/07/05 PHP
JavaScript 解析Json字符串的性能比较分析代码
2009/12/16 Javascript
在JS数组特定索引处指定位置插入元素
2014/07/27 Javascript
使用正则表达式的格式化与高亮显示json字符串
2014/12/03 Javascript
JavaScript常用标签和方法总结
2015/09/01 Javascript
分享两款带遮罩的jQuery弹出框
2015/12/30 Javascript
ES6所改良的javascript“缺陷”问题
2016/08/23 Javascript
JavaScript 过滤关键字
2017/03/20 Javascript
如何在 Vue.js 中使用第三方js库
2017/04/25 Javascript
浅谈angular.copy() 深拷贝
2017/09/14 Javascript
ES6中的Promise代码详解
2017/10/09 Javascript
原生JS实现简单的倒计时功能示例
2018/08/30 Javascript
Vue js 的生命周期(看了就懂)(推荐)
2019/03/29 Javascript
详解javascript void(0)
2020/07/13 Javascript
[47:35]VP vs Pain 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/20 DOTA
python字符串Intern机制详解
2019/07/01 Python
python使用requests.session模拟登录
2019/08/09 Python
Python手绘可视化工具cutecharts使用实例
2019/12/05 Python
Windows下Pycharm远程连接虚拟机中Centos下的Python环境(图文教程详解)
2020/03/19 Python
django正续或者倒序查库实例
2020/05/19 Python
益模软件Java笔试题
2012/03/27 面试题
Python如何实现单例模式
2016/06/03 面试题
高中生毕业学习总结的自我评价
2013/11/14 职场文书
护理不良事件检讨书
2014/02/06 职场文书
班组长岗位职责
2014/03/03 职场文书
大学生学期自我鉴定
2014/03/19 职场文书
公司周年庆典策划方案
2014/05/17 职场文书
工业设计专业自荐书
2014/06/05 职场文书
送温暖献爱心活动总结
2014/07/08 职场文书
领导干部四风问题自我剖析材料
2014/09/25 职场文书
房屋登记授权委托书范本
2014/10/09 职场文书
党风廉政建设个人总结
2015/03/06 职场文书
篮球拉拉队口号
2015/12/25 职场文书