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 相关文章推荐
5个javascript的数字格式化函数分享
Dec 07 Javascript
node.js中的emitter.emit方法使用说明
Dec 10 Javascript
使用ngView配合AngularJS应用实现动画效果的方法
Jun 19 Javascript
详解javascript函数的参数
Nov 10 Javascript
详解JavaScript的AngularJS框架中的表达式与指令
Mar 05 Javascript
深入剖析javascript中的exec与match方法
May 18 Javascript
JavaScript ES5标准中新增的Array方法
Jun 28 Javascript
angularjs2中父子组件的数据传递的实例代码
Jul 05 Javascript
VeeValidate在vue项目里表单校验应用案例
May 09 Javascript
JS实现百度搜索框关键字推荐
Feb 17 Javascript
vue实例的选项总结
Jun 09 Javascript
Ajax请求超时与网络异常处理图文详解
May 23 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
ajax在joomla中的原生态应用代码
2012/07/19 PHP
thinkphp模板用法和内容输出实例
2014/11/28 PHP
php中get_cfg_var()和ini_get()的用法及区别
2015/03/04 PHP
5款适合PHP使用的HTML编辑器推荐
2015/07/03 PHP
PHP 断点续传实例详解
2017/11/11 PHP
PHP date()格式MySQL中插入datetime方法
2019/01/29 PHP
js传值 判断
2006/10/26 Javascript
jQuery中val()方法用法实例
2014/12/25 Javascript
JavaScript设计模式之工厂方法模式介绍
2014/12/28 Javascript
基于jquery实现页面滚动时顶部导航显示隐藏
2020/04/20 Javascript
AngularJS实现数据列表的增加、删除和上移下移等功能实例
2016/09/05 Javascript
Angular之指令Directive用法详解
2017/03/01 Javascript
利用jquery如何从json中读取数据追加到html中
2017/12/01 jQuery
原生js实现淘宝放大镜效果
2020/10/28 Javascript
axios+Vue实现上传文件显示进度功能
2019/04/14 Javascript
vue cli使用融云实现聊天功能的实例代码
2019/04/19 Javascript
Pyramid将models.py文件的内容分布到多个文件的方法
2013/11/27 Python
Python类的多重继承问题深入分析
2014/11/09 Python
在Python程序中进行文件读取和写入操作的教程
2015/04/28 Python
python自定义类并使用的方法
2015/05/07 Python
Python+MongoDB自增键值的简单实现
2016/11/04 Python
Python使用googletrans报错的解决方法
2018/09/25 Python
python3.6+selenium实现操作Frame中的页面元素
2019/07/16 Python
Django Docker容器化部署之Django-Docker本地部署
2019/10/09 Python
Belle Maison倍美丛官网:日本千趣会旗下邮购网站
2016/07/22 全球购物
Algenist奥杰尼官网:微藻抗衰老护肤品牌
2017/07/15 全球购物
Rakuten Kobo台湾:电子书、eReaders和Reading应用程式
2017/11/24 全球购物
澳大利亚网上玩具商店:Mr Toys Toyworld
2018/03/25 全球购物
美国全球旅游运营商:Pacific Holidays
2018/06/18 全球购物
监理员的岗位职责
2013/11/13 职场文书
成功经营餐厅的创业计划书范文
2013/12/26 职场文书
客户服务经理岗位职责
2014/01/29 职场文书
幼儿学前班评语
2014/12/29 职场文书
李白故里导游词
2015/02/12 职场文书
大专护理专业自荐信
2015/03/25 职场文书
盘点2020年适合农村地区创业的项目
2019/10/16 职场文书