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 相关文章推荐
jQuery 中关于CSS操作部分使用说明
Jun 10 Javascript
javascript 火狐(firefox)不显示本地图片问题解决
Jul 05 Javascript
js获取IP和PcName(IE)在vs中可用
Aug 02 Javascript
为Javascript中的String对象添加去除左右空格的方法(示例代码)
Nov 30 Javascript
jquery表单验证框架提供的身份证验证方法(示例代码)
Dec 27 Javascript
jQuery.ajax 跨域请求webapi设置headers的解决方案
Aug 08 Javascript
KVM虚拟化技术之使用Qemu-kvm创建和管理虚拟机的方法
Oct 05 Javascript
微信小程序实战之自定义模态弹窗(8)
Apr 18 Javascript
解决ie img标签内存泄漏的问题
Oct 13 Javascript
使用JS location实现搜索框历史记录功能
Dec 23 Javascript
Vue中使用better-scroll实现轮播图组件
Mar 07 Javascript
解决vue自定义指令导致的内存泄漏问题
Aug 04 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
基于mysql的论坛(6)
2006/10/09 PHP
php smarty模版引擎中的缓存应用
2009/12/11 PHP
php实现约瑟夫问题的方法小结
2015/03/23 PHP
PHP微信开发之根据用户回复关键词\位置返回附近信息
2016/06/24 PHP
jquery给图片添加鼠标经过时的边框效果
2013/11/12 Javascript
jQuery使用$.ajax提交表单完整实例
2015/12/11 Javascript
AngularJs页面筛选标签小功能
2016/08/01 Javascript
解决node.js安装包失败的几种方法
2016/09/02 Javascript
js将table的每个td的内容自动赋值给其title属性的方法
2016/10/13 Javascript
JavaScript随机生成颜色的方法
2016/10/15 Javascript
vue省市区三联动下拉选择组件的实现
2017/04/28 Javascript
详解设置Webstorm 利用babel将ES6自动转码成ES5
2017/12/20 Javascript
element-ui中的select下拉列表设置默认值方法
2018/08/24 Javascript
Node.js+ELK日志规范的实现
2019/05/23 Javascript
解决node.js含有%百分号时发送get请求时浏览器地址自动编码的问题
2019/11/20 Javascript
python错误:AttributeError: 'module' object has no attribute 'setdefaultencoding'问题的解决方法
2014/08/22 Python
python根据出生年份简单计算生肖的方法
2015/03/27 Python
Python随机生成数模块random使用实例
2015/04/13 Python
python实现根据ip地址反向查找主机名称的方法
2015/04/29 Python
Python中用sleep()方法操作时间的教程
2015/05/22 Python
Python函数返回值实例分析
2015/06/08 Python
Python内置的HTTP协议服务器SimpleHTTPServer使用指南
2016/03/30 Python
解决pyqt5中QToolButton无法使用的问题
2019/06/21 Python
Django admin.py 在修改/添加表单界面显示额外字段的方法
2019/08/22 Python
python定义类self用法实例解析
2020/01/22 Python
详解html5 postMessage解决跨域通信的问题
2018/08/17 HTML / CSS
中国专业的音频分享平台:喜马拉雅
2019/05/24 全球购物
德国家用电器购物网站:Premiumshop24
2019/08/22 全球购物
2014大学生全国两会学习心得体会
2014/03/13 职场文书
热门专业求职信
2014/05/24 职场文书
白酒代理协议书范本
2014/10/26 职场文书
解除同居协议书
2015/01/29 职场文书
士兵突击观后感
2015/06/16 职场文书
2016党员发展对象培训心得体会
2016/01/08 职场文书
Python爬虫基础之初次使用scrapy爬虫实例
2021/06/26 Python
Win2008系统搭建DHCP服务器
2022/06/25 Servers