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 相关文章推荐
解决iframe的frameborder在chrome/ff/ie下的差异
Aug 12 Javascript
js数组方法扩展实现数组统计函数
Apr 09 Javascript
javascript中var的重要性分析
Feb 11 Javascript
ui组件之input多选下拉实现方法(带有搜索功能)
Jul 14 Javascript
微信小程序 支付功能实现PHP实例详解
May 12 Javascript
基于React+Redux的SSR实现方法
Jul 03 Javascript
浅析Vue实例以及生命周期
Aug 14 Javascript
浅谈微信JS-SDK 微信分享接口开发(介绍版)
Aug 15 Javascript
js canvas实现红包照片效果
Aug 21 Javascript
vue-cli脚手架的安装教程图解
Sep 02 Javascript
单页面vue引入百度统计的使用方法示例详解
Oct 13 Javascript
我要点爆”微信小程序云开发之项目建立与我的页面功能实现
May 26 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入门学习知识点七 PHP函数的基本应用
2011/07/14 PHP
php中的四舍五入函数代码(floor函数、ceil函数、round与intval)
2014/07/14 PHP
PHP中的switch语句的用法实例详解
2015/10/21 PHP
PHP判断一个变量是否为整数、正整数的方法示例
2019/09/11 PHP
自适应高度框架 ----属个人收藏内容
2007/01/22 Javascript
prototype 学习笔记整理
2009/07/17 Javascript
框架页面高度自动刷新的Javascript脚本
2013/11/01 Javascript
用js提交表单解决一个页面有多个提交按钮的问题
2014/09/01 Javascript
深入理解JavaScript系列(49):Function模式(上篇)
2015/03/04 Javascript
jQuery中animate用法实例分析
2015/03/09 Javascript
JQuery实现带排序功能的权限选择实例
2015/05/18 Javascript
jquery实现隐藏在左侧的弹性弹出菜单效果
2015/09/18 Javascript
为何JS操作的href都是javascript:void(0);呢
2015/11/12 Javascript
JS递归遍历对象获得Value值方法技巧
2016/06/14 Javascript
详解Node.js中的事件机制
2016/09/22 Javascript
认识less和webstrom的less配置方法
2017/08/02 Javascript
在微信小程序中渲染HTML内容的方法示例
2018/09/28 Javascript
vue 中基于html5 drag drap的拖放效果案例分析
2018/11/01 Javascript
JS中getElementsByClassName与classList兼容性问题解决方案分析
2019/08/07 Javascript
浅谈layui 表单元素的选中问题
2019/10/25 Javascript
jQuery操作元素追加内容示例
2020/01/10 jQuery
vue下canvas裁剪图片实例讲解
2020/04/16 Javascript
小程序实现列表展开收起效果
2020/07/29 Javascript
react ant Design手动设置表单的值操作
2020/10/31 Javascript
python3正则提取字符串里的中文实例
2019/01/31 Python
Python爬虫与反爬虫大战
2020/07/30 Python
法国二手手袋、手表和奢侈珠宝购物网站:Collector Square
2018/07/05 全球购物
三星新西兰官网:Samsung新西兰
2019/03/05 全球购物
公司行政经理岗位职责
2013/12/24 职场文书
失业者真诚求职信范文
2013/12/25 职场文书
详细的大学生创业计划书模板
2014/01/27 职场文书
水电工程师岗位职责
2015/02/13 职场文书
公司欠款证明
2015/06/24 职场文书
个人工作失误的保证书怎么写?
2019/06/21 职场文书
承诺书的签字人,需不需要承担相应的责任?
2019/07/09 职场文书
Python OpenGL基本配置方式
2022/05/20 Python