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 valueOf 使用方法
Dec 28 Javascript
再谈querySelector和querySelectorAll的区别与联系
Apr 20 Javascript
js关闭当前页面(窗口)的几种方式总结
Mar 05 Javascript
jQuery实现瀑布流布局
Dec 12 Javascript
jQuery图片特效插件Revealing实现拉伸放大
Apr 22 Javascript
详解JavaScript的while循环的使用
Jun 03 Javascript
JS实现的5级联动Select下拉选择框实例
Aug 17 Javascript
jQuery点击按钮弹出遮罩层且内容居中特效
Dec 14 Javascript
JavaScript小技巧整理篇(非常全)
Jan 26 Javascript
jquery显示隐藏元素的实现代码
May 19 Javascript
js/jq仿window文件夹移动/剪切/复制等操作代码
Mar 08 Javascript
Vue项目中设置背景图片方法
Feb 21 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中将html中的br换行符转换为文本输入中的换行符
2013/03/26 PHP
PHP提取字符串中的手机号正则表达式怎么写
2017/07/17 PHP
JavaScript 应用类库代码
2008/06/02 Javascript
javascript 模拟点击广告
2010/01/02 Javascript
jQuery 点击图片跳转上一张或下一张功能的实现代码
2010/03/12 Javascript
juqery 学习之五 文档处理 插入
2011/02/11 Javascript
JQuery球队选择实例
2015/05/18 Javascript
表单验证插件Validation应用的实例讲解
2015/10/10 Javascript
jQuery实现仿QQ在线客服效果的滚动层代码
2015/10/15 Javascript
jquery实现一个简单的表单验证实例
2016/03/30 Javascript
jQuery实现的浮动层div浏览器居中显示效果
2017/02/03 Javascript
vue下跨域设置的相关介绍
2017/08/26 Javascript
Vue SPA单页应用首屏优化实践
2018/06/28 Javascript
深入理解Vue 组件之间传值
2018/08/16 Javascript
仿ElementUI实现一个Form表单的实现代码
2019/04/23 Javascript
vue-cli3配置与跨域处理方法
2019/08/17 Javascript
ant-design表单处理和常用方法及自定义验证操作
2020/10/27 Javascript
使用python调用浏览器并打开一个网址的例子
2014/06/05 Python
Python操作MySQL数据库9个实用实例
2015/12/11 Python
PyQt5的安装配置过程,将ui文件转为py文件后显示窗口的实例
2019/06/19 Python
详解Python利用random生成一个列表内的随机数
2019/08/21 Python
Django框架 querySet功能解析
2019/09/04 Python
Python双链表原理与实现方法详解
2020/02/22 Python
Django 实现对已存在的model进行更改
2020/03/28 Python
python print 格式化输出,动态指定长度的实现
2020/04/12 Python
canvas实现有递增动画的环形进度条的实现方法
2019/07/10 HTML / CSS
天游软件面试
2013/11/23 面试题
超市营业员岗位职责
2013/12/20 职场文书
合作投资意向书
2014/04/01 职场文书
交通安全标语
2014/06/06 职场文书
招标承诺书
2014/08/30 职场文书
2015年小学开学寄语
2015/02/27 职场文书
学年个人总结范文
2015/03/05 职场文书
社区挂职锻炼个人工作总结
2015/10/23 职场文书
pdf论文中python画的图Type 3 fonts字体不兼容的解决方案
2021/04/24 Python
Canvas绘制像素风图片的示例代码
2021/09/25 HTML / CSS