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 相关文章推荐
ext jquery 简单比较
Apr 07 Javascript
jquery 循环显示div的示例代码
Oct 18 Javascript
Javascript基础 函数“重载” 详细介绍
Oct 25 Javascript
jQuery遍历对象、数组、集合实例
Nov 08 Javascript
javascript实现依次输入input自动定焦
Dec 23 Javascript
深入理解JQuery循环绑定事件
Jun 02 Javascript
javascript基础知识
Jun 07 Javascript
javascript数组对象常用api函数小结(连接,插入,删除,反转,排序等)
Sep 20 Javascript
js绑定事件和解绑事件
Apr 27 Javascript
JQuery实现简单的复选框树形结构图示例【附源码下载】
Jul 16 jQuery
使用Node.js在深度学习中做图片预处理的方法
Sep 18 Javascript
微信小程序实现左侧滑动导航栏
Apr 08 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面向对象全攻略 (十四) php5接口技术
2009/09/30 PHP
Prototype源码浅析 Number部分
2012/01/16 Javascript
JavaScript中的原型和继承详解(图文)
2014/07/18 Javascript
javascript上下方向键控制表格行选中并高亮显示的方法
2015/02/13 Javascript
JavaScript代码生成PDF文件的方法
2016/02/26 Javascript
常用的js验证和数据处理总结
2016/08/02 Javascript
jQuery ajaxForm()的应用
2016/10/14 Javascript
jQuery Ztree行政地区树状展示(点击加载)
2016/11/09 Javascript
JQuery和PHP结合实现动态进度条上传显示
2016/11/23 Javascript
遍历json获得数据的几种方法小结
2017/01/21 Javascript
three.js实现围绕某物体旋转
2017/01/25 Javascript
详解利用jsx写vue组件的方法示例
2017/07/17 Javascript
vue2.0 如何在hash模式下实现微信分享
2019/01/22 Javascript
详解js加减乘除精确计算
2019/03/19 Javascript
Nodejs实现用户注册功能
2019/04/14 NodeJs
微信小程序仿通讯录功能
2020/04/09 Javascript
如何在现代JavaScript中编写异步任务
2021/01/31 Javascript
python聊天程序实例代码分享
2013/11/18 Python
python实现的DES加密算法和3DES加密算法实例
2015/06/03 Python
详解使用 pyenv 管理多个版本 python 环境
2017/10/19 Python
在python中使用正则表达式查找可嵌套字符串组
2017/10/24 Python
浅谈python中字典append 到list 后值的改变问题
2018/05/04 Python
Python File(文件) 方法整理
2019/02/18 Python
python字符串替换re.sub()方法解析
2019/09/18 Python
Python开发企业微信机器人每天定时发消息实例
2020/03/17 Python
Java Unsafe类实现原理及测试代码
2020/09/15 Python
一款css实现的鼠标经过按钮的特效
2014/09/11 HTML / CSS
css3实现动画的三种方式
2020/08/24 HTML / CSS
将HTML5 Canvas的内容保存为图片借助toDataURL实现
2013/05/20 HTML / CSS
HTML5实现一个能够移动的小坦克示例代码
2013/09/02 HTML / CSS
解决HTML5中的audio在手机端和微信端的不能自动播放问题
2019/11/04 HTML / CSS
荷兰最大的鞋子、服装和运动折扣店:Bristol
2021/01/07 全球购物
2014年文学毕业生自我鉴定
2014/04/23 职场文书
党员个人查摆剖析材料
2014/10/16 职场文书
2015年护士工作总结范文
2015/03/31 职场文书
导游词之黄帝陵景区
2019/09/16 职场文书