用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 相关文章推荐
js option删除代码集合
Nov 12 Javascript
jquery eval解析JSON中的注意点介绍
Aug 23 Javascript
node.js正则表达式获取网页中所有链接的代码实例
Jun 03 Javascript
jQuery取得设置清空select选择的文本与值
Jul 08 Javascript
JavaScript省市区三级联动菜单效果
Sep 21 Javascript
JS实现多级菜单中当前菜单不随页面跳转样式而发生变化
May 30 Javascript
jquery单击文字或图片内容放大并居中显示
Jun 23 jQuery
关于jQuery.ajax()的jsonp碰上post详解
Jul 02 jQuery
jQuery实现鼠标移到某个对象时弹出显示层功能
Aug 23 jQuery
利用jquery和BootStrap实现动态滚动条效果
Dec 03 jQuery
微信小程序日历组件使用方法详解
Dec 29 Javascript
js实现转动骰子模型
Oct 24 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 版获取重定向后的地址(代码)
2013/06/26 PHP
php中文验证码实现方法
2015/06/18 PHP
php fseek函数读取大文件两种方法
2016/10/12 PHP
php json_encode与json_decode详解及实例
2016/12/13 PHP
PHP PDOStatement::errorCode讲解
2019/01/31 PHP
pjblog修改技巧汇总
2007/03/12 Javascript
Javascript 获取字符串字节数的多种方法
2009/06/02 Javascript
JavaScript prototype属性使用说明
2010/05/13 Javascript
Dom 结点创建 基础知识
2011/10/01 Javascript
Javascript对象中关于setTimeout和setInterval的this介绍
2012/07/21 Javascript
使用javascript实现页面定时跳转总结篇
2013/09/21 Javascript
js实现的点击数量加一可操作数据库
2014/05/09 Javascript
让alert不出现弹窗的两种方法
2014/05/18 Javascript
整理Javascript函数学习笔记
2015/12/01 Javascript
jQuery.form插件的使用及跨域异步上传文件
2016/04/27 Javascript
微信js-sdk界面操作接口用法示例
2016/10/12 Javascript
JS验证码实现代码
2017/09/14 Javascript
JS设计模式之策略模式概念与用法分析
2018/02/05 Javascript
vue2.0 axios跨域并渲染的问题解决方法
2018/03/08 Javascript
js加减乘除精确运算方法实例代码
2021/01/17 Javascript
PyTorch: 梯度下降及反向传播的实例详解
2019/08/20 Python
python随机数分布random均匀分布实例
2019/11/27 Python
对Pytorch中Tensor的各种池化操作解析
2020/01/03 Python
Opencv常见图像格式Data Type及代码实例
2020/11/02 Python
Python django框架 web端视频加密的实例详解
2020/11/20 Python
Python析构函数__del__定义原理解析
2020/11/20 Python
Fairyseason:为个人和批发商提供女装和配件
2017/03/01 全球购物
无谷物狗粮:Pooch & Mutt
2018/05/23 全球购物
馥绿德雅美国官方网站:Rene Furterer头皮护理专家
2019/05/01 全球购物
沙特阿拉伯电子产品和家用电器购物网站:Black Box
2019/07/24 全球购物
应聘医学检验人员自荐信
2013/09/27 职场文书
幼儿园教研活动方案
2014/01/19 职场文书
《那片绿绿的爬山虎》教学反思
2014/02/27 职场文书
毕业生欢送会主持词
2014/03/31 职场文书
2014公安机关纪律作风整顿思想汇报
2014/09/13 职场文书
2019年行政人事个人工作总结范本!
2019/07/19 职场文书