用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 相关文章推荐
表单提交验证类
Jul 14 Javascript
新浪的图片新闻效果
Jan 13 Javascript
页面中iframe相互传值传参
Dec 13 Javascript
IE6下JS动态设置图片src地址问题
Jan 08 Javascript
js计算字符串长度包含的中文是utf8格式
Oct 15 Javascript
ExtJS的拖拽效果示例
Dec 09 Javascript
javascript中match函数的用法小结
Feb 08 Javascript
实例讲解JS中setTimeout()的用法
Jan 28 Javascript
jQuery学习笔记之入门
Dec 14 Javascript
详解handlebars+require基本使用方法
Dec 21 Javascript
angularjs http与后台交互的实现示例
Dec 21 Javascript
详解写好JS条件语句的5条守则
Feb 28 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文件
2007/01/04 PHP
基于Zookeeper的使用详解
2013/05/02 PHP
解析VS2010利用VS.PHP插件调试PHP的方法
2013/07/19 PHP
Javascript常考语句107条收集
2010/03/09 Javascript
Javascript动态创建表格及删除行列的方法
2015/05/15 Javascript
AngularJS的表单使用详解
2015/06/17 Javascript
基于Css3和JQuery实现打字机效果
2015/08/11 Javascript
基于JavaScript FileReader上传图片显示本地链接
2016/05/27 Javascript
AngularJS基础 ng-keydown 指令简单示例
2016/08/02 Javascript
jQuery实现可拖拽3D万花筒旋转特效
2017/01/03 Javascript
React简单介绍
2017/05/24 Javascript
JavaScript30 一个月纯 JS 挑战中文指南(英文全集)
2017/07/23 Javascript
react-native fetch的具体使用方法
2017/11/01 Javascript
AngularJS使用Filter自定义过滤器控制ng-repeat去除重复功能示例
2018/04/21 Javascript
如何把vuejs打包出来的文件整合到springboot里
2018/07/26 Javascript
微信实现自动跳转到用其他浏览器打开指定APP下载
2019/02/15 Javascript
JavaScript实现的九种排序算法
2019/03/04 Javascript
微信小程序 this.triggerEvent()的具体使用
2019/12/10 Javascript
简单讲解Python编程中namedtuple类的用法
2016/06/21 Python
Python使用defaultdict读取文件各列的方法
2017/05/11 Python
Python实现的多进程和多线程功能示例
2018/05/29 Python
python实现测试工具(一)——命令行发送get请求
2020/10/19 Python
css3旋转木马_动力节点Java学院整理
2017/07/12 HTML / CSS
html5实现移动端适配完美写法
2017/11/16 HTML / CSS
自考自我鉴定范文
2013/10/30 职场文书
求职信写作要突出重点
2014/01/01 职场文书
超市国庆节促销方案
2014/02/20 职场文书
怎么写好自荐书
2014/03/02 职场文书
2014春晚主持词
2014/03/25 职场文书
英语一分钟演讲稿
2014/04/29 职场文书
护士先进个人总结
2015/02/13 职场文书
学校食堂食品安全承诺书
2015/04/29 职场文书
龙猫观后感
2015/06/09 职场文书
《我是什么》教学反思
2016/02/16 职场文书
小学生作文之《压岁钱的烦恼》
2019/09/27 职场文书
【海涛教你打DOTA】死灵飞龙第一视角解说
2022/04/01 DOTA