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 相关文章推荐
一段实时更新的时间代码
Jul 07 Javascript
基于Jquery的简单&amp;简陋Tabs插件代码
Feb 09 Javascript
Javascript下判断是否为闰年的Datetime包
Oct 26 Javascript
JavaScript中的字符串操作详解
Nov 12 Javascript
jquery.idTabs 选项卡使用示例代码
Sep 03 Javascript
jQuery 1.9.1源码分析系列(十五)之动画处理
Dec 03 Javascript
js实现的页面加载完毕之前loading提示效果完整示例【附demo源码下载】
Aug 02 Javascript
js return返回多个值,通过对象的属性访问方法
Feb 21 Javascript
微信小程序实现下载进度条的方法
Dec 08 Javascript
微信小程序如何实现全局重新加载
Jun 05 Javascript
Vue之Mixins(混入)的使用方法
Sep 24 Javascript
基于vue hash模式微信分享#号的解决
Sep 07 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
用libtemplate实现静态网页生成
2006/10/09 PHP
php 生成饼图 三维饼图
2009/09/28 PHP
php中获取远程客户端的真实ip地址的方法
2011/08/03 PHP
基于header的一些常用指令详解
2013/06/06 PHP
curl实现站外采集的方法和技巧
2014/01/31 PHP
Windows下编译PHP5.4和xdebug全记录
2015/04/03 PHP
php实现源代码加密的方法
2015/07/11 PHP
实例解析php的数据类型
2018/10/24 PHP
Javascript客户端将指定区域导出到Word、Excel的代码
2008/10/22 Javascript
不使用中间变量,交换int型的 a, b两个变量的值。
2010/10/29 Javascript
jQuery图片预加载 等比缩放实现代码
2011/10/04 Javascript
javascript使用switch case实现动态改变超级链接文字及地址
2014/12/16 Javascript
jquery带动画效果幻灯片特效代码
2015/08/27 Javascript
jQuery点击改变class并toggle及toggleClass()方法定义用法
2015/12/11 Javascript
ReactNative-JS 调用原生方法实例代码
2016/10/08 Javascript
vue插件实现v-model功能
2018/09/10 Javascript
基于vue的验证码组件的示例代码
2019/01/22 Javascript
手把手15分钟搭一个企业级脚手架
2019/09/16 Javascript
解决vue 子组件修改父组件传来的props值报错问题
2019/11/09 Javascript
js实现点击烟花特效
2020/10/14 Javascript
Python处理XML格式数据的方法详解
2017/03/21 Python
Python使用filetype精确判断文件类型
2017/07/02 Python
Python 2.x如何设置命令执行的超时时间实例
2017/10/19 Python
分析python动态规划的递归、非递归实现
2018/03/04 Python
对Python模块导入时全局变量__all__的作用详解
2019/01/11 Python
python实现猜拳小游戏
2020/04/05 Python
洲际酒店集团美国官网:IHG美国
2017/11/16 全球购物
时尚设计师手表:The Watch Cabin
2018/10/06 全球购物
生物科学专业个人求职信范文
2013/12/05 职场文书
幼儿教师寄语集锦
2014/04/03 职场文书
检讨书格式
2015/05/07 职场文书
2015年卫生局工作总结
2015/07/24 职场文书
幼儿教师三分钟演讲稿
2019/06/21 职场文书
用Python爬取某乎手机APP数据
2021/06/15 Python
Python中文纠错的简单实现
2021/07/07 Python
php解析非标准json、非规范json的方式实例
2022/05/10 PHP