用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插件windowScroll实现单屏滚动特效
Jul 14 Javascript
javascript模拟C#格式化字符串
Aug 26 Javascript
Jquery ajax基础教程
Nov 20 Javascript
js实现遍历含有input的table实例
Dec 07 Javascript
JavaScript浏览器对象模型BOM(BrowserObjectModel)实例详解
Nov 29 Javascript
利用VUE框架,实现列表分页功能示例代码
Jan 12 Javascript
vue语法之拼接字符串的示例代码
Oct 25 Javascript
vue页面加载闪烁问题的解决方法
Mar 28 Javascript
详解在不使用ssr的情况下解决Vue单页面SEO问题
Nov 08 Javascript
JavaScript函数重载操作实例浅析
May 02 Javascript
js实现ajax的用户简单登入功能
Jun 18 Javascript
从表单校验看JavaScript策略模式的使用详解
Oct 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 验证码的实现代码
2011/07/17 PHP
ThinkPHP分组下自定义标签库实例
2014/11/01 PHP
Yii中使用PHPExcel导出Excel的方法
2014/12/26 PHP
jQuery学习笔记之DOM对象和jQuery对象
2010/12/22 Javascript
jqgrid 简单学习笔记
2011/05/03 Javascript
WEB前端设计师常用工具集锦
2014/12/09 Javascript
使用命令对象代替switch语句的写法示例
2015/02/28 Javascript
JavaScript简单判断复选框是否选中及取出值的方法
2015/08/13 Javascript
18个非常棒的jQuery代码片段
2015/11/02 Javascript
gameboy网页闯关游戏(riddle webgame)--仿微信聊天的前端页面设计和难点
2016/02/21 Javascript
基于jquery实现三级下拉菜单
2016/05/10 Javascript
完美解决jQuery 鼠标快速滑过后,会执行多次滑出的问题
2016/12/08 Javascript
js return返回多个值,通过对象的属性访问方法
2017/02/21 Javascript
详解AngularJs ui-router 路由的简单介绍
2017/04/26 Javascript
Vue的移动端多图上传插件vue-easy-uploader的示例代码
2017/11/27 Javascript
微信小程序Page中data数据操作和函数调用方法
2019/05/08 Javascript
javascript for循环性能测试示例
2019/08/07 Javascript
解决Layui数据表格的宽高问题
2019/09/28 Javascript
[26:50]2018完美盛典DOTA2表演赛
2018/12/17 DOTA
[43:41]VP vs RNG 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.21.mp4
2020/07/19 DOTA
python读取与写入csv格式文件的示例代码
2017/12/16 Python
Python适配器模式代码实现解析
2019/08/02 Python
python笔记_将循环内容在一行输出的方法
2019/08/08 Python
python让函数不返回结果的方法
2020/06/22 Python
Python requests接口测试实现代码
2020/09/08 Python
澳大利亚窗帘商店:Curtain Wonderland
2019/12/01 全球购物
幼儿园安全检查制度
2014/01/30 职场文书
中学生自我评价范文
2014/02/08 职场文书
市场营销大学生职业规划书
2014/02/25 职场文书
大学生入党推荐书范文
2014/05/17 职场文书
2015庆祝七一建党节94周年活动总结
2015/03/20 职场文书
施工单位工程部经理岗位职责
2015/04/09 职场文书
2015年学校总务工作总结
2015/07/20 职场文书
教师学习十八届五中全会精神心得体会
2016/01/05 职场文书
redis中lua脚本使用教程
2021/11/01 Redis
Java由浅入深通关抽象类与接口(上篇)
2022/04/26 Java/Android