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教程
Jun 09 Javascript
Lazy Load 延迟加载图片的 jQuery 插件
Feb 06 Javascript
使用jQuery实现dropdownlist的联动效果(sharepoint 2007)
Mar 30 Javascript
javascript 保存文件到本地实现方法
Nov 29 Javascript
js设置cookie过期及清除浏览器对应名称的cookie
Oct 24 Javascript
jQuery 事件的命名空间简单了解
Nov 22 Javascript
Js控制滑轮左右滑动实例
Feb 13 Javascript
js给网页加上背景音乐及选择音效的方法
Mar 03 Javascript
JS基于cookie实现来宾统计记录访客信息的方法
Aug 04 Javascript
angular 实时监听input框value值的变化触发函数方法
Aug 31 Javascript
浅析Vue 中的 render 函数
Feb 28 Javascript
基于js实现数组相邻元素上移下移
May 19 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比你想象的好得多
2014/11/27 PHP
jqGrid jQuery 表格插件测试代码
2011/08/23 Javascript
Js放到HTML文件中的哪个位置有什么区别
2013/08/21 Javascript
javascript使用onclick事件改变选中行的颜色
2013/12/30 Javascript
jQuery 处理页面的事件详解
2015/01/20 Javascript
JS实现左右无缝轮播图代码
2016/05/01 Javascript
jQuery根据name属性进行查找的用法分析
2016/06/23 Javascript
全面理解闭包机制
2016/07/11 Javascript
js实现文字截断功能
2016/09/14 Javascript
js学习总结_选项卡封装(实例讲解)
2017/07/13 Javascript
基于iScroll实现内容滚动效果
2018/03/21 Javascript
说说node中的可读流和可写流的区别
2018/06/01 Javascript
jQuery实现的点击按钮改变样式功能示例
2018/07/21 jQuery
超好用的jQuery分页插件jpaginate用法示例【附源码下载】
2018/12/06 jQuery
微信小程序基于高德地图API实现天气组件(动态效果)
2020/10/22 Javascript
vue.js+element 默认提示中英文操作
2020/11/11 Javascript
Python生成随机验证码的两种方法
2015/12/22 Python
python脚本实现xls(xlsx)转成csv
2016/04/10 Python
利用selenium 3.7和python3添加cookie模拟登陆的实现
2017/11/20 Python
Python中的CSV文件使用&quot;with&quot;语句的方式详解
2018/10/16 Python
pygame游戏之旅 如何制作游戏障碍
2018/11/20 Python
Django项目之Elasticsearch搜索引擎的实例
2019/08/21 Python
浅谈pytorch中torch.max和F.softmax函数的维度解释
2020/06/28 Python
浅析python字符串前加r、f、u、l 的区别
2021/01/24 Python
css3 仿写阿里云水纹效果的示例代码
2018/02/10 HTML / CSS
考试作弊被抓检讨书
2014/01/10 职场文书
我未来的职业规划范文
2014/01/11 职场文书
酒店开业策划方案
2014/06/02 职场文书
药剂专业求职信
2014/06/20 职场文书
群众路线剖析材料怎么写
2014/10/09 职场文书
2014年组织部工作总结
2014/11/14 职场文书
复兴之路观后感
2015/06/02 职场文书
2015教师个人师德工作总结
2015/10/23 职场文书
创业计划书之家政服务
2019/09/18 职场文书
redis连接被拒绝的解决方案
2021/04/12 Redis
MySQL 百万级数据的4种查询优化方式
2021/06/07 MySQL