js实现淘宝浏览商品放大镜功能


Posted in Javascript onOctober 28, 2020

本文实例为大家分享了js实现淘宝浏览商品放大镜的具体代码,供大家参考,具体内容如下

1、准备两张图片,其中一张图片分辨率为另一张图片的二倍。

2、前端页面布局

js实现淘宝浏览商品放大镜功能

//box1位左侧原图,box2为右侧放大图额显示框,son为iv class="box1">
 <div class="son"></div>
 <div class="ceng"></div>
</div>
<div class="box2"></div>

3、js写逻辑

let box1=document.querySelector(".box1");
 let box2=document.querySelector(".box2");
 let son=document.querySelector(".son");
 let ceng=document.querySelector(".ceng");
 //鼠标移入:son,box2出现
 ceng.onmouseenter=function(){
  son.style.display="block"
  box2.style.display="block"
 }
 //鼠标移出:son,box2消失
 ceng.onmouseleave=function(){
  son.style.display="none"
  box2.style.display="none"
 }
 //鼠标移动:son的位置随鼠标移动,box2背景图的位置变化
 ceng.onmousemove=function(e){
  let sw=e.clientX-son.offsetWidth/2
  let sh=e.clientY-son.offsetHeight/2  
  if(sw>ceng.offsetWidth-son.offsetWidth){
   sw=ceng.offsetWidth-son.offsetWidth
  }
  else if(sw<=0){
   sw=0;
  }
  if(sh>ceng.offsetHeight-son.offsetHeight){
   sh=ceng.offsetHeight-son.offHeight
  }
  else if(sh<=0){
   sh=0;
  }
  son.style.left=sw+"px"
  son.style.top=sh+"px"
  box2.style.backgroundPosition=`${-2*sw}px ${-2*sh}px`
 }

完整代码

<!DOCTYPE html>
<html lang="en">
<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>
</head>
<style>
 *{
  margin: 0;
  padding: 0;
 }
 .box1{
  width: 500px;
  height:333px;
  /* border:1px solid red; */
  background: url('shatan.jpg') no-repeat;
  position: relative;
  float: left;
  box-sizing: border-box
 }
 .son{
  width: 100px;
  height: 100px;
  background-color: #fff;
  position: fixed;
  left:0;
  top:0;
  opacity: 0.7;
  display: none;
 }
 .ceng{
  width: 100%;
  height: 100%;
  position: absolute;
  top: 0;
  left: 0;
  z-index: 100;
 }
 .box2{
  width: 200px;
  height:200px;
  border:1px solid red;
  background: url('shatan1.jpg') no-repeat;
  float: left;
  display: none;
 }
</style>
<body>
 <div class="box1">
  <div class="son"></div>
  <div class="ceng"></div>
 </div>
 <div class="box2"></div>
</body>
</html>
<script>
 let box1=document.querySelector(".box1");
 let box2=document.querySelector(".box2");
 let son=document.querySelector(".son");
 let ceng=document.querySelector(".ceng");
 ceng.onmouseenter=function(){
  son.style.display="block"
  box2.style.display="block"
 }
 ceng.onmouseleave=function(){
  son.style.display="none"
  box2.style.display="none"
 }
 ceng.onmousemove=function(e){
  let sw=e.clientX-son.offsetWidth/2
  let sh=e.clientY-son.offsetHeight/2  
  if(sw>ceng.offsetWidth-son.offsetWidth){
   sw=ceng.offsetWidth-son.offsetWidth
  }
  else if(sw<=0){
   sw=0;
  }
  if(sh>ceng.offsetHeight-son.offsetHeight){
   sh=ceng.offsetHeight-son.offHeight
  }
  else if(sh<=0){
   sh=0;
  }
  son.style.left=sw+"px"
  son.style.top=sh+"px"
  box2.style.backgroundPosition=`${-2*sw}px ${-2*sh}px`
 }
</script>

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

Javascript 相关文章推荐
javascript 按键事件(兼容各浏览器)
Dec 20 Javascript
js控制分页打印、打印分页示例
Feb 08 Javascript
js用闭包遍历树状数组的方法
Mar 19 Javascript
jQuery实现字符串按指定长度加入特定内容的方法
Mar 11 Javascript
js 截取或者替换字符串中的数字实现方法
Jun 13 Javascript
jQuery插件EasyUI设置datagrid的checkbox为禁用状态的方法
Aug 05 Javascript
vue+axios实现登录拦截的实例代码
May 22 Javascript
vue-cli构建项目使用 less的方法
Oct 04 Javascript
JS实现二维数组横纵列转置的方法
Apr 17 Javascript
vue实现添加与删除图书功能
Oct 07 Javascript
JavaScript简易计算器制作
Jan 17 Javascript
react中的DOM操作实现
Jun 30 Javascript
js实现详情页放大镜效果
Oct 28 #Javascript
用js实现放大镜效果
Oct 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
You might like
php file_get_contents函数轻松采集html数据
2010/04/22 PHP
php实现利用phpexcel导出数据
2013/08/24 PHP
PHP中仿制 ecshop验证码实例
2017/01/06 PHP
[原创]php正则删除img标签的方法示例
2017/05/27 PHP
JavaScript中的new的使用方法与注意事项
2007/05/16 Javascript
javascript面向对象的方式实现的弹出层效果代码
2010/01/28 Javascript
jquery鼠标放上去显示悬浮层即弹出定位的div层
2014/04/25 Javascript
JavaScript实现鼠标滑过图片变换效果的方法
2015/04/16 Javascript
jquery实现倒计时功能
2015/12/28 Javascript
实例讲解javascript注册事件处理函数
2016/01/09 Javascript
jQuery animate easing使用方法图文详解
2016/06/17 Javascript
微信小程序实现折叠面板
2018/01/31 Javascript
微信小程序实现随机验证码功能
2018/12/20 Javascript
vuex页面刷新后数据丢失的方法
2019/01/17 Javascript
微信小程序转化为uni-app项目的方法示例
2020/05/22 Javascript
SpringBoot在yml配置文件中配置druid的操作
2020/11/16 Javascript
springboot+vue实现文件上传下载
2020/11/17 Vue.js
[11:01]2014DOTA2西雅图邀请赛 冷冷带你探秘威斯汀
2014/07/08 DOTA
[51:14]LGD vs VP 2018国际邀请赛淘汰赛BO3 第一场 8.21
2018/08/22 DOTA
[08:06]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Elephant 选手采访
2021/03/11 DOTA
解读! Python在人工智能中的作用
2017/11/14 Python
selenium处理元素定位点击无效问题
2019/06/12 Python
pyqt5 从本地选择图片 并显示在label上的实例
2019/06/13 Python
PyQt5响应回车事件的方法
2019/06/25 Python
使用python将最新的测试报告以附件的形式发到指定邮箱
2019/09/20 Python
基于pytorch padding=SAME的解决方式
2020/02/18 Python
python 代码运行时间获取方式详解
2020/09/18 Python
scrapy redis配置文件setting参数详解
2020/11/18 Python
python openpyxl模块的使用详解
2021/02/25 Python
Nike爱尔兰官方网站:Nike.com (IE)
2018/03/12 全球购物
美国保健品专家:Life Extension
2018/05/04 全球购物
工程部主管岗位职责
2013/11/17 职场文书
教师演讲稿范文
2014/01/08 职场文书
毕业自我鉴定总结
2014/03/24 职场文书
四十年同学聚会致辞
2015/07/28 职场文书
心理健康教育主题班会
2015/08/13 职场文书