如何用JavaScript实现电商商品图片的放大镜长尾词效果?

2026-04-02 11:021阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1509个文字,预计阅读时间需要7分钟。

如何用JavaScript实现电商商品图片的放大镜长尾词效果?

本文分享了JavaScript实现电商放大镜效果的完整代码示例,供大家参考学习。主要内容如下:

1. event.pageX 属性返回鼠标指针的位置,相对于文档左边的距离。

2.clientX 属性返回事件发生时鼠标指针的位置,相对于浏览器窗口左边的距离。

示例代码:

javascript

// 鼠标移入放大镜区域function magnify() { // 获取放大镜元素和放大区域元素 var magnifier=document.getElementById('magnifier'); var magnifierArea=document.getElementById('magnifierArea');

// 鼠标移入时,放大镜跟随鼠标移动 magnifier.onmousemove=function(e) { // 获取鼠标指针相对于文档的X坐标 var pageX=e.pageX;

// 计算放大镜的移动距离 var moveX=pageX - magnifier.offsetWidth / 2;

如何用JavaScript实现电商商品图片的放大镜长尾词效果?

// 限制放大镜移动范围 if (moveX magnifierArea.offsetWidth - magnifier.offsetWidth) { moveX=magnifierArea.offsetWidth - magnifier.offsetWidth; }

// 设置放大镜的left属性 magnifier.style.left=moveX + 'px';

// 获取放大区域内的图片元素 var img=document.getElementById('img');

// 计算图片缩放的倍数 var scale=magnifier.offsetWidth / magnifierArea.offsetWidth;

// 计算图片需要移动的距离 var moveImgX=(pageX - magnifier.offsetWidth / 2 - magnifierArea.offsetLeft) * scale;

// 限制图片移动范围 if (moveImgX img.offsetWidth - magnifierArea.offsetWidth) { moveImgX=img.offsetWidth - magnifierArea.offsetWidth; }

// 设置图片的left属性 img.style.left=-moveImgX + 'px'; };}

本文实例为大家分享了javascript实现电商放大镜效果的具体代码,供大家参考,具体内容如下

学习内容:

1、event.pageX 属性返回鼠标指针的位置,相对于文档的左边缘。
2、clientX 事件属性返回当事件被触发时鼠标指针相对于浏览器页面(或客户区)的水平坐标。
3、onmouseenter鼠标移入
4、onmouseleave鼠标移出

案例完整代码。html+css3+javascript

案例需求:鼠标点击左边图片时(鼠标呈十字架),遮罩层显示,右边盒子显示。且鼠标移动中心在遮罩层中心,右边大盒子显示鼠标点到的地方,以800:350比例显示。遮罩层只能规定左边盒子范围内移动而且不给超出。

步骤:

1. 查找元素

1.1 查找 main 总分区
1.2 查找 small 盒子
1.3 查找 small 盒子内的 img 小图片
1.4 查找 mask 遮罩层
1.5 查找 big 盒子
1.6 查找 big 盒子内的 img 大图片

2. 鼠标移入 main 的时候

2.1 显示 遮罩盒子
2.2 显示 大图分区

3. 鼠标移出 main 的时候

3.1 隐藏 遮罩盒子
3.2 隐藏 大图分区

4. 鼠标在 main 移动的时候 !!!

4.1 遮罩盒子 跟随 鼠标移动
4.2 遮罩盒子 在 鼠标中心 处理
4.3 遮罩盒子 在 分区边界 内移动处理
4.4 大图片 <反向> <按比例> 跟随 鼠标移动

注意. 获取元素偏移值和宽高

1. 获取 分区 的 水平,垂直偏移值
2. 获取 分区 的 宽度,高度
3. 获取 遮罩盒子 的 宽度,高度 (隐藏的盒子无法获取宽高)
4. 获取 大图片 的 宽度,高度 (隐藏的盒子无法获取宽高)

html代码:

<body> <!-- 整个大盒子 --> <div class="main" id="main"> <div class="small"> <!--小图--> <img alt="" class="smallImg" src="../img/iphoneX.jpg" width="350" /> <!-- 遮挡层,黄色的小方块 --> <div class="mask"></div> </div> <!--大层--> <div class="big"> <!--大图--> <img alt="" class="bigImg" src="../img/iphoneX.jpg" width="800" /> </div> </div> </body>

css代码:

<style> * { margin: 0; padding: 0; } .main { width: 350px; height: 350px; margin: 100px; border: 1px solid #ccc; position: relative; } .big { width: 400px; height: 400px; position: absolute; top: 0; left: 360px; border: 1px solid #ccc; overflow: hidden; display: none; } .mask { width: 175px; height: 175px; background: rgba(255, 255, 0, 0.4); position: absolute; top: 0px; left: 0px; /* 把鼠标指针换成移动图标 */ cursor: move; display: none; } .small { position: relative; height: 350px; width: 350px; } .active .mask, .active .big { display: block; } .big img { /* 相对定位:相对自己原本的位置定位,原来的位置保留的 */ position: absolute; } </style>

javascript代码:

<script> //查找元素 var main = document.querySelector(".main"); var small = document.querySelector(".small"); //左边小盒子 var smallImg = document.querySelector(".smallImg"); var mask = document.querySelector(".mask"); //黄色遮罩层 var big = document.querySelector(".big");//右边小盒子 var bigImg = document.querySelector(".big .bigImg"); //2. 鼠标移入 main 的时候 //2.1 显示 遮罩盒子 // 2.2 显示 大图分区 main.onmouseenter=function () { mask.style.display="block"; big.style.display="block"; }; main.onmouseleave=function () { mask.style.display="none"; big.style.display="none"; }; // 4. 鼠标在 main 移动的时候 !!! // 4.1 遮罩盒子 跟随 鼠标移动 // 4.2 遮罩盒子 在 鼠标中心 处理 // 4.3 遮罩盒子 在 分区边界 内移动处理 // 4.4 大图片 <反向> <按比例> 跟随 鼠标移动 small.onmousemove=function (e) { var x=e.pageX-100-(175/2); //盒子的宽高为300px,因为鼠标默认在左上角。因为需要向左移动自身一半 var y=e.pageY-100-(175/2); 盒子的宽高为300px,因为鼠标默认在左上角。因为需要向下移动自身一半 if(x<0) x=0; //规定遮罩层移动范围。如果遮罩层超出了小盒子边框,x就重置为0. if(y<0) y=0; // //规定遮罩层移动范围。如果遮罩层超出了小盒子边框,y就重置为0. if(x>175) x=175; //遮罩层本身的宽高为175 if(y>175) y=175; mask.style.top=(y)+"px"; mask.style.left=(x)+"px"; bigImg.style.top=(-y*(800/350))+"px"; //右边放大效果,以800:350显示 bigImg.style.left=(-x*(800/350))+"px"; //在xy前面加-号是因为需要反向显示 } </script>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持易盾网络。

本文共计1509个文字,预计阅读时间需要7分钟。

如何用JavaScript实现电商商品图片的放大镜长尾词效果?

本文分享了JavaScript实现电商放大镜效果的完整代码示例,供大家参考学习。主要内容如下:

1. event.pageX 属性返回鼠标指针的位置,相对于文档左边的距离。

2.clientX 属性返回事件发生时鼠标指针的位置,相对于浏览器窗口左边的距离。

示例代码:

javascript

// 鼠标移入放大镜区域function magnify() { // 获取放大镜元素和放大区域元素 var magnifier=document.getElementById('magnifier'); var magnifierArea=document.getElementById('magnifierArea');

// 鼠标移入时,放大镜跟随鼠标移动 magnifier.onmousemove=function(e) { // 获取鼠标指针相对于文档的X坐标 var pageX=e.pageX;

// 计算放大镜的移动距离 var moveX=pageX - magnifier.offsetWidth / 2;

如何用JavaScript实现电商商品图片的放大镜长尾词效果?

// 限制放大镜移动范围 if (moveX magnifierArea.offsetWidth - magnifier.offsetWidth) { moveX=magnifierArea.offsetWidth - magnifier.offsetWidth; }

// 设置放大镜的left属性 magnifier.style.left=moveX + 'px';

// 获取放大区域内的图片元素 var img=document.getElementById('img');

// 计算图片缩放的倍数 var scale=magnifier.offsetWidth / magnifierArea.offsetWidth;

// 计算图片需要移动的距离 var moveImgX=(pageX - magnifier.offsetWidth / 2 - magnifierArea.offsetLeft) * scale;

// 限制图片移动范围 if (moveImgX img.offsetWidth - magnifierArea.offsetWidth) { moveImgX=img.offsetWidth - magnifierArea.offsetWidth; }

// 设置图片的left属性 img.style.left=-moveImgX + 'px'; };}

本文实例为大家分享了javascript实现电商放大镜效果的具体代码,供大家参考,具体内容如下

学习内容:

1、event.pageX 属性返回鼠标指针的位置,相对于文档的左边缘。
2、clientX 事件属性返回当事件被触发时鼠标指针相对于浏览器页面(或客户区)的水平坐标。
3、onmouseenter鼠标移入
4、onmouseleave鼠标移出

案例完整代码。html+css3+javascript

案例需求:鼠标点击左边图片时(鼠标呈十字架),遮罩层显示,右边盒子显示。且鼠标移动中心在遮罩层中心,右边大盒子显示鼠标点到的地方,以800:350比例显示。遮罩层只能规定左边盒子范围内移动而且不给超出。

步骤:

1. 查找元素

1.1 查找 main 总分区
1.2 查找 small 盒子
1.3 查找 small 盒子内的 img 小图片
1.4 查找 mask 遮罩层
1.5 查找 big 盒子
1.6 查找 big 盒子内的 img 大图片

2. 鼠标移入 main 的时候

2.1 显示 遮罩盒子
2.2 显示 大图分区

3. 鼠标移出 main 的时候

3.1 隐藏 遮罩盒子
3.2 隐藏 大图分区

4. 鼠标在 main 移动的时候 !!!

4.1 遮罩盒子 跟随 鼠标移动
4.2 遮罩盒子 在 鼠标中心 处理
4.3 遮罩盒子 在 分区边界 内移动处理
4.4 大图片 <反向> <按比例> 跟随 鼠标移动

注意. 获取元素偏移值和宽高

1. 获取 分区 的 水平,垂直偏移值
2. 获取 分区 的 宽度,高度
3. 获取 遮罩盒子 的 宽度,高度 (隐藏的盒子无法获取宽高)
4. 获取 大图片 的 宽度,高度 (隐藏的盒子无法获取宽高)

html代码:

<body> <!-- 整个大盒子 --> <div class="main" id="main"> <div class="small"> <!--小图--> <img alt="" class="smallImg" src="../img/iphoneX.jpg" width="350" /> <!-- 遮挡层,黄色的小方块 --> <div class="mask"></div> </div> <!--大层--> <div class="big"> <!--大图--> <img alt="" class="bigImg" src="../img/iphoneX.jpg" width="800" /> </div> </div> </body>

css代码:

<style> * { margin: 0; padding: 0; } .main { width: 350px; height: 350px; margin: 100px; border: 1px solid #ccc; position: relative; } .big { width: 400px; height: 400px; position: absolute; top: 0; left: 360px; border: 1px solid #ccc; overflow: hidden; display: none; } .mask { width: 175px; height: 175px; background: rgba(255, 255, 0, 0.4); position: absolute; top: 0px; left: 0px; /* 把鼠标指针换成移动图标 */ cursor: move; display: none; } .small { position: relative; height: 350px; width: 350px; } .active .mask, .active .big { display: block; } .big img { /* 相对定位:相对自己原本的位置定位,原来的位置保留的 */ position: absolute; } </style>

javascript代码:

<script> //查找元素 var main = document.querySelector(".main"); var small = document.querySelector(".small"); //左边小盒子 var smallImg = document.querySelector(".smallImg"); var mask = document.querySelector(".mask"); //黄色遮罩层 var big = document.querySelector(".big");//右边小盒子 var bigImg = document.querySelector(".big .bigImg"); //2. 鼠标移入 main 的时候 //2.1 显示 遮罩盒子 // 2.2 显示 大图分区 main.onmouseenter=function () { mask.style.display="block"; big.style.display="block"; }; main.onmouseleave=function () { mask.style.display="none"; big.style.display="none"; }; // 4. 鼠标在 main 移动的时候 !!! // 4.1 遮罩盒子 跟随 鼠标移动 // 4.2 遮罩盒子 在 鼠标中心 处理 // 4.3 遮罩盒子 在 分区边界 内移动处理 // 4.4 大图片 <反向> <按比例> 跟随 鼠标移动 small.onmousemove=function (e) { var x=e.pageX-100-(175/2); //盒子的宽高为300px,因为鼠标默认在左上角。因为需要向左移动自身一半 var y=e.pageY-100-(175/2); 盒子的宽高为300px,因为鼠标默认在左上角。因为需要向下移动自身一半 if(x<0) x=0; //规定遮罩层移动范围。如果遮罩层超出了小盒子边框,x就重置为0. if(y<0) y=0; // //规定遮罩层移动范围。如果遮罩层超出了小盒子边框,y就重置为0. if(x>175) x=175; //遮罩层本身的宽高为175 if(y>175) y=175; mask.style.top=(y)+"px"; mask.style.left=(x)+"px"; bigImg.style.top=(-y*(800/350))+"px"; //右边放大效果,以800:350显示 bigImg.style.left=(-x*(800/350))+"px"; //在xy前面加-号是因为需要反向显示 } </script>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持易盾网络。