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 相关文章推荐
Prototype Object对象 学习
Jul 12 Javascript
将页面table内容与样式另存成excel文件的方法
Aug 05 Javascript
jquery限定文本框只能输入数字(整数和小数)
Jan 08 Javascript
JS双击变input框批量修改内容
Dec 12 Javascript
走进javascript——不起眼的基础,值和分号
Feb 24 Javascript
老生常谈Bootstrap媒体对象
Jul 06 Javascript
js指定步长实现单方向匀速运动
Jul 17 Javascript
bootstrap table实现x-editable的行单元格编辑及解决数据Empty和支持多样式问题
Aug 10 Javascript
jQuery中过滤器的基本用法示例
Oct 11 jQuery
详解Vue组件之作用域插槽
Nov 22 Javascript
如何在微信小程序里面退出小程序的方法
Apr 28 Javascript
node.js实现上传文件功能
Jul 15 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 友好URL的实现(吐血推荐)
2008/10/04 PHP
php生成zip文件类实例
2015/04/07 PHP
浅谈PHP发送HTTP请求的几种方式
2017/07/25 PHP
PHP智能识别收货地址信息实例
2019/01/05 PHP
JavaScript实现Sleep函数的代码
2007/03/04 Javascript
javascritp实现input输入框相关限制用法
2007/06/29 Javascript
js关闭子窗体刷新父窗体实现方法
2012/12/04 Javascript
使用Grunt.js管理你项目的应用说明
2013/04/24 Javascript
举例讲解JavaScript substring()的使用方法
2015/11/09 Javascript
基于javascript如何传递特殊字符
2015/11/30 Javascript
如何使用PHP+jQuery+MySQL实现异步加载ECharts地图数据(附源码下载)
2016/02/23 Javascript
使用RequireJS库加载JavaScript模块的实例教程
2016/06/06 Javascript
bootstrap table 表格中增加下拉菜单末行出现滚动条的快速解决方法
2017/01/05 Javascript
JS仿JQuery选择器功能
2017/03/08 Javascript
js清除浏览器缓存的几种方法
2017/03/15 Javascript
微信小程序ibeacon三点定位详解
2018/10/31 Javascript
vue+elementUI 复杂表单的验证、数据提交方案问题
2019/06/24 Javascript
微信小程序实现树莓派(raspberry pi)小车控制
2020/02/12 Javascript
jquery实现手风琴案例
2020/05/04 jQuery
[08:07]DOTA2每周TOP10 精彩击杀集锦vol.8
2014/06/25 DOTA
python实现sublime3的less编译插件示例
2014/04/27 Python
Python中bisect的用法
2014/09/23 Python
Python通过Django实现用户注册和邮箱验证功能代码
2017/12/11 Python
python的concat等多种用法详解
2018/11/28 Python
python自定义函数实现一个数的三次方计算方法
2019/01/20 Python
python实现QQ邮箱/163邮箱的邮件发送
2019/01/22 Python
python pytest进阶之fixture详解
2019/06/27 Python
Python xmltodict模块安装及代码实例
2020/10/05 Python
使用css如何制作时间ICON方法实践
2012/11/12 HTML / CSS
浅谈html5之sse服务器发送事件EventSource介绍
2017/08/28 HTML / CSS
乌克兰最大的家用电器和电子产品连锁店:Eldorado
2019/10/02 全球购物
海飞丝广告词
2014/03/20 职场文书
煤矿开采专业求职信
2014/07/08 职场文书
忠诚教育心得体会
2014/09/03 职场文书
学会Python数据可视化必须尝试这7个库
2021/06/16 Python
Redis三种集群模式详解
2021/10/05 Redis