javascript实现电商放大镜效果


Posted in Javascript onNovember 23, 2020

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

学习内容:

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

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

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

javascript实现电商放大镜效果

步骤:

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>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js同时按下两个方向键
Dec 01 Javascript
Extjs学习笔记之九 数据模型(上)
Jan 11 Javascript
javascript实现window.print()去除页眉页脚
Dec 30 Javascript
学习AngularJs:Directive指令用法(完整版)
Apr 26 Javascript
JS功能代码集锦
May 04 Javascript
jQuery简单获取DIV和A标签元素位置的方法
Feb 07 Javascript
Vue.js 2.0中select级联下拉框实例
Mar 06 Javascript
vue轮播图插件vue-awesome-swiper的使用代码实例
Jul 10 Javascript
jQuery实现参数自定义的文字跑马灯效果
Aug 15 jQuery
Vue 菜单栏点击切换单个class(高亮)的方法
Aug 22 Javascript
Vuex 使用及简单实例(计数器)
Aug 29 Javascript
webpack的 rquire.context用法实现工程自动化的方法
Feb 07 Javascript
用webAPI实现图片放大镜效果
Nov 23 #Javascript
Vue 的 v-model用法实例
Nov 23 #Vue.js
JavaScript实现网页留言板功能
Nov 23 #Javascript
VUE+Element实现增删改查的示例源码
Nov 23 #Vue.js
js观察者模式的弹幕案例
Nov 23 #Javascript
js异步接口并发数量控制的方法示例
Nov 22 #Javascript
Vue实现购物小球抛物线的方法实例
Nov 22 #Vue.js
You might like
雄兵连:第三季确定会出,不过时间未定,鹤熙是第三季的主角!
2020/03/13 国漫
在smarty模板中使用PHP函数的方法
2011/04/23 PHP
php编程每天必学之表单验证
2016/03/01 PHP
让textarea控件的滚动条怎是位与最下方
2007/04/20 Javascript
总结AJAX相关JS代码片段和浏览器模型
2007/08/15 Javascript
浏览器脚本兼容 文本框中,回车键触发事件的兼容
2010/06/21 Javascript
jQuery实现两列等高并自适应高度
2016/12/22 Javascript
微信小程序商城项目之商品属性分类(4)
2017/04/17 Javascript
Vue2.0父子组件传递函数的教程详解
2017/10/16 Javascript
vue父组件向子组件动态传值的两种方法
2017/11/11 Javascript
基于vue.js无缝滚动效果
2018/01/25 Javascript
Node.js 利用cheerio制作简单的网页爬虫示例
2018/03/01 Javascript
微信小程序methods中定义的方法互相调用的实例代码
2018/08/07 Javascript
vue使用axios上传文件(FormData)的方法
2019/04/14 Javascript
详解JavaScript中关于this指向的4种情况
2019/04/18 Javascript
详解在React-Native中持久化redux数据
2019/05/22 Javascript
vue实例的选项总结
2020/06/09 Javascript
[14:20]刀塔大凶女神互压各路奇葩屌丝
2014/05/16 DOTA
python去除所有html标签的方法
2015/05/05 Python
深入解析Python中的descriptor描述器的作用及用法
2016/06/27 Python
python实现从文件中读取数据并绘制成 x y 轴图形的方法
2018/10/14 Python
python scp 批量同步文件的实现方法
2019/01/03 Python
Appium Python自动化测试之环境搭建的步骤
2019/01/23 Python
关于python导入模块import与常见的模块详解
2019/08/28 Python
Django 批量插入数据的实现方法
2020/01/12 Python
美国一家专业的太阳镜网上零售商:Solstice太阳镜
2016/07/25 全球购物
英国排名第一的在线宠物用品商店:Monster Pet Supplies
2018/05/20 全球购物
新加坡交友网站:be2新加坡
2019/04/10 全球购物
澳大利亚最大的护发和护肤品购物网站:RY
2019/12/26 全球购物
家长给孩子的表扬信
2014/01/17 职场文书
社区工作者感言
2014/03/02 职场文书
说明书怎么写
2014/05/06 职场文书
2014年重阳节活动策划方案书
2014/09/16 职场文书
大学生创业事迹材料
2014/12/30 职场文书
怀孕辞职信怎么写
2015/02/28 职场文书
求职意向书范本
2015/05/11 职场文书