放大镜如何用js

例如:

let imgs = {   small: ["imgA_1.jpg", "imgB_1.jpg", "imgC_1.jpg"],   middle: ["imgA_2.jpg", "imgB_2.jpg", "imgC_2.jpg"],   large: ["imgA_3.jpg", "imgB_3.jpg", "imgC_3.jpg"]};

handleSmall();handleMiddle();handleMove();

function handleSmall(){   // 渲染小图   smallImg.innerHTML = imgs.small.map((item, index) => {      return `<li><a href="#"><img src="./images/${item}" _id="${index}" class="imgLi" /></a></li>`   }).join("");

smallImg.addEventListener("mouseover", (e) => {      if(e.target.nodeName === "IMG"){

let imgArr = document.getElementsByClassName("imgLi");         for(let i = 0;i < imgArr.length;i++){            imgArr[i].style.borderColor = "transparent";         }         e.target.style.borderColor = "black";

let i = e.target.getAttribute("_id");         middleImg.style.background = `url("./images/${imgs.middle[i]}") no-repeat`;         largeImg.style.background = `url("./images/${imgs.large[i]}") no-repeat`;      }   }, false);}

function handleMiddle(){   middleImg.addEventListener("mouseover", () => {      largeImg.style.display = "block";      enlarge.style.display = "block";   }, false)   middleImg.addEventListener("mouseout", () => {      largeImg.style.display = "none";      enlarge.style.display = "none";   }, false)}

function handleMove(){   middleImg.addEventListener("mousemove", (e) => {      // 鼠标相对于文档显示区的坐标      let mouseX = e.clientX;      let mouseY = e.clientY;      // middleImg 相对于文档显示区的坐标      let middleX = middleImg.offsetLeft;      let middleY = middleImg.offsetTop;

let moveX = mouseX - middleX - enlarge.offsetWidth / 2;      let moveY =mouseY -middleY - enlarge.offsetHeight / 2;

if(moveX <= 0){         moveX = 0;      }else if(moveX >= middleImg.clientWidth - enlarge.offsetWidth){         moveX = middleImg.clientWidth - enlarge.offsetWidth      }      if(moveY <= 0){         moveY = 0;      }else if(moveY >= middleImg.clientHeight - enlarge.offsetHeight){         moveY = middleImg.clientHeight - enlarge.offsetHeight      }

enlarge.style.left = moveX + "px";      enlarge.style.top = moveY + "px";

largeImg.style.backgroundPositionX = -moveX * (800 / 430) + "px";      largeImg.style.backgroundPositionY = -moveY * (800 / 430) + "px";

}, false)}
时间: 2024-11-14 12:32:48

放大镜如何用js的相关文章

如何用js检测判断时间日期的间距

<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>如何用js检测判断日期大于多少天</title> <script> window.onload=function(){ var ul1=document.getElementById("time"); var span1=ul1.getElementsByTag

WebDatagrid-checkbox行如何用js控制其是否可用

由于js不能控制WebDatagrid的可编辑不可编辑,只能用前台控制.当checkbox行需要设置有时可选有时不可选,如何用js解决. 需要先后台设置可编辑.Behaviors.EditingCore.enabled=true; 然后前台设置: WebDatagrid.get_columns().get_columnFromKey("行key值")._editableCheckbox = false; 进行前台设置. <Columns> <ig:UnboundChe

360极速浏览器UA怪异以及如何用js判断360浏览器

本文最后一次更新于7个月前,文章内容可能略有出入.若发现文章中有错误之处,可以留言评论告诉作者. 1.360极速浏览器UA因域名不同而异 今天在写一个判断浏览器.浏览器版本.操作系统.操作系统版本.浏览器外壳的js,去http://hao.360.cn/sethomepage.html网站看看他们的js是如何写的,始终不知道他们是如何通过js来判断浏览器是360极速的,这不看不知道,一看吓一跳. 在http://hao.360.cn/sethomepage.html这个网址访问的时候,获得浏览器

如何用js判断一个对象是不是Array

.如何用js判断一个对象是不是Array 1.Array.isArray(obj) 调用数组的isArray方法 2.obj instanceof Array 判断对象是否是Array的实例 3.Object.prototype.toString.call(obj) ==='[object Array]' Object.prototype.toString方法会取得对象的一个内部属性[[Class]],然后依据这个属性,返回一个类似于[object Array]的字符串作为结果,call用来改变

如何用js为动态生成的元素绑定事件

今天在开发项目的时候,需要为用js动态生成的元素绑定一个click事件,但是在页面加载之前,这个元素不存在,没法获取这个元素,然后为其添加事件.查阅jquery api 发现可以用on()事件(注意:新版本的jquery已经把live()去除,现在用on()),为动态生产的元素绑定事件,然后触发该事件执行.比如下面一个例子: 假设我们要给div动态添加的span绑定click事件形成如下结果 x //做法如下: ("#choose_result").on("click&quo

如何用JS和HTML 做一个桌面炒股小插件【原创】

首先,使用node-webkit 做环境,废话不多说,直接贴HTML <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title> &

如何用 js 获取table 或者其他块状标签的 宽和高

这个比较简单,总体思想,标签标记一个id,js获取id,就能用它的属性了.介绍两种方法.请看下面代码. 第一种 1 <script> 2 3 function width_table_all() { 4 7 var tabl = document.getElementById("tabl").offsetWidth; 8 alert(tabl); 11 }183 </script> 这个是js的函数,offsetWidth是一个属性.tabl是id,请看下面的t

如何用js定义数组,用js来拼接json字段

定义js数组的方式有: var arr = (); var arr = []; var arr = new Array(); 如何拼接成一个json字段. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <TITLE> obj TO JSON Demo </TITLE> <META NAME="Genera

带你玩转web开发之四 -如何用JS做登录注册页面校验

今日内容 使用JQuery完成页面定时弹出广告 使用JQuery完成表格的隔行换色 使用JQuery完成复选框的全选效果 使用JQuery完成省市联动效果 使用JQuery完成下列列表左右选择 使用JQuery完成表单的校验. 今日目标: 掌握JQuery的基本使用 掌握JQuery的基本选择器,层次选择器 会使用JQuery完成DOM的基本操作 定时弹出广告 定时器: setInterval setTimeout clearInterval style.display : none 隐藏 bl