用js制作淘宝放大镜效果


Posted in Javascript onOctober 28, 2020

本文实例为大家分享了js制作淘宝放大镜效果的具体代码,供大家参考,具体内容如下

<!DOCTYPE html>
<html>
 <head>
  <meta charset="UTF-8">
  <title></title>
  <style type="text/css">
   *{
    margin: 0;
    padding: 0;
   }
   img{
    width: 100%;
    height: 100%;
   }
   #content{
    width: auto;
    height: auto;
    margin-left: 200px;
    margin-top: 60px;
   }
   #content-left{
    position: relative;
    width: 420px;
    height: auto;
    float: left;
   }
   #middle{
    border: 1px solid #d2d2d2;
    width: 418px;
    height: 418px;
   }
   #small{
    width: 420px;
    height: auto;
   }
   #glass{
    position: absolute;
    width: 200px;
    height: 200px;
    background-color: pink;
    top: 0;
    opacity: 0.5;
    z-index: 1;
    display: none;
   }
   ul{
    width: inherit;
    height: 60px;
   }
   ul li{
    display: inline;
    height: 60px;
    list-style: none;
    float: left;
    margin: 10px;
   }
   #content-right{
    position: relative;
    width: 418px;
    height: 418px;
    border: 1px solid #ccc;
    float: left;
    margin-left: 10px;
    overflow: hidden;
    display: none;
   }
   #content-right img{
    position: absolute;
    width: 836px;
    height: 836px;
   }
  </style>
 </head>
 <body>
  <div id="content">
   <div id="content-left">
    <div id="middle">
     <div id="glass"></div>
     <img src="img/01.jpg"/>
    </div>
    <div id="small">
     <ul>
      <li><img src="img/1.jpg"/></li>
      <li><img src="img/2.jpg"/></li>
      <li><img src="img/3.jpg"/></li>
      <li><img src="img/4.jpg"/></li>
      <li><img src="img/5.jpg"/></li>
     </ul>
    </div>
   </div>
   <div id="content-right">
    <img src="img/001.jpg"/>
   </div>
  </div>
 </body>
 <script type="text/javascript">
  var smallLi = document.getElementById("small").getElementsByTagName("ul")[0].getElementsByTagName("li");
  var middle = document.getElementById("middle")
  var middleImg = middle.getElementsByTagName("img")[0]
  var contentRight = document.getElementById("content-right");
  var bigImg = contentRight.getElementsByTagName("img")[0]
  var glass = document.getElementById("glass");
  //获取放大镜大小
  var bigImgWidth = getStyle(bigImg,"width");
  var bigImgHeight = getStyle(bigImg,"height");
  var contentRightWidth = getStyle(contentRight,"width");
  var contentRightHeight = getStyle(contentRight,"height");
  var middleWidth = getStyle(middle,"width");
  var middleHeight = getStyle(middle,"height");
  var glassWidth = contentRightWidth/bigImgWidth*middleWidth;
  var glassHeight = contentRightHeight/bigImgHeight*middleHeight;
  var middleBorder = getStyle(middle,"border")
  glass.style.width = glassWidth + "px";
  glass.style.height = glassHeight + "px";
  for(var i =0;i<smallLi.length;i++){
   (function(index){
    smallLi[i].onmouseover = function(){
     middleImg.src = "img/0"+index+".jpg";
     bigImg.src = "img/00"+index+".jpg"
    }
   })((i+1));
  }
  middle.onmouseover = function(){
   contentRight.style.display = "block"
   glass.style.display = "block"
   middle.onmousemove = function(ev){
    var evt = ev||event
    var x = evt.x - content.offsetLeft -glass.offsetWidth/2 + window.scrollX - middleBorder
    var y = evt.y - content.offsetTop - glass.offsetHeight/2 + window.scrollY - middleBorder
    if(x<=middleBorder){
     x = middleBorder;
    }
    if(x>=middle.offsetWidth-glass.offsetWidth-middleBorder){
     x = middle.offsetWidth - glass.offsetWidth -middleBorder;
    }
    if(y<=middleBorder){
     y = middleBorder;
    }
    if(y>=middle.offsetHeight-glass.offsetHeight-middleBorder){
     y = middle.offsetHeight - glass.offsetHeight - middleBorder;
    }
    glass.style.left = x + "px"
    glass.style.top = y + "px"
    bigImg.style.left = -x*middleWidth/glassWidth + middleBorder*2 + "px"
    bigImg.style.top = -y*middleHeight/glassHeight + middleBorder*2 + "px"
    console.log(x)
    console.log(x*middleWidth/glassWidth)
   }
   middle.onmouseout = function(){
    contentRight.style.display = "none";
    glass.style.display = "none";
   }
  }
  function getStyle(obj,attr){//获取css属性
   return (obj.currentStyle)?parseInt(obj.currentStyle[attr]):parseInt(getComputedStyle(obj,false)[attr]);
  }
 </script>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery Clone Bug解决代码
Dec 22 Javascript
JQuery中$.ajax()方法参数详解及应用
Dec 12 Javascript
js 动态加载事件的几种方法总结
Dec 25 Javascript
JS获取单击按钮单元格所在行的信息
Jun 17 Javascript
jQuery如何获取动态添加的元素
Jun 24 Javascript
AngularJS入门教程之数据绑定用法示例
Nov 01 Javascript
新闻上下滚动jquery 超简洁(必看篇)
Jan 21 Javascript
详解AngularJs HTTP响应拦截器实现登陆、权限校验
Apr 11 Javascript
详解JavaScript中关于this指向的4种情况
Apr 18 Javascript
VUE页面中通过双击实现复制表格中内容的示例代码
Jun 11 Javascript
解决vue bus.$emit触发第一次$on监听不到问题
Jul 28 Javascript
vue如何在data中引入图片的正确路径
Jun 05 Vue.js
js实现百度搜索提示框
Feb 05 #Javascript
jQuery.Form上传文件操作
Feb 05 #Javascript
jQuery实现最简单实用的分秒倒计时
Feb 05 #Javascript
用jquery的attr方法实现图片切换效果
Feb 05 #Javascript
JavaScript编写九九乘法表(两种任选)
Feb 04 #Javascript
JS动态生成年份和月份实例代码
Feb 04 #Javascript
详解AngularJS中$filter过滤器使用(自定义过滤器)
Feb 04 #Javascript
You might like
PHP中的float类型使用说明
2010/07/27 PHP
供参考的 php 学习提高路线分享
2011/10/23 PHP
PHP实现获取某个月份周次信息的方法
2015/08/11 PHP
iOS+PHP注册登录系统 PHP部分(上)
2016/12/26 PHP
PHP智能识别收货地址信息实例
2019/01/05 PHP
基于jquery的仿百度的鼠标移入图片抖动效果
2010/09/17 Javascript
jquery获取颜色在ie和ff下的区别示例介绍
2014/03/28 Javascript
Jquery 获取指定标签的对象及属性的设置与移除
2014/05/29 Javascript
整理AngularJS中的一些常用指令
2015/06/16 Javascript
Jquery数字上下滚动动态切换插件
2015/08/08 Javascript
JavaScript encodeURI 和encodeURIComponent
2015/12/04 Javascript
jQuery+CSS实现滑动的标签分栏切换效果
2015/12/17 Javascript
微信小程序  自定义创建详细介绍
2016/10/27 Javascript
JS冒泡事件与事件捕获实例详解
2016/11/25 Javascript
vue-cli项目中使用echarts图表实例
2018/10/22 Javascript
vue-router 起步步骤详解
2019/03/26 Javascript
javascript/jquery实现点击触发事件的方法分析
2019/11/11 jQuery
ES6常用小技巧总结【去重、交换、合并、反转、迭代、计算等】
2019/12/21 Javascript
vue+openlayers绘制省市边界线
2020/12/24 Vue.js
Python Socket编程之多线程聊天室
2018/07/28 Python
python实现微信机器人: 登录微信、消息接收、自动回复功能
2019/04/29 Python
Python tkinter模版代码实例
2020/02/05 Python
linux 下selenium chrome使用详解
2020/04/02 Python
如何用Python进行时间序列分解和预测
2021/03/01 Python
CSS3颜色值RGBA与渐变色使用介绍
2020/03/06 HTML / CSS
台湾菁英交友:结识黄金单身的台湾人
2018/01/22 全球购物
关于赌博的检讨书
2014/01/24 职场文书
十八大报告观后感
2014/01/28 职场文书
《黄山奇石》教学反思
2014/04/19 职场文书
党的群众路线教育实践活动查摆剖析材料
2014/10/10 职场文书
党员专题组织生活会发言材料
2014/10/17 职场文书
2016年小学“公民道德宣传日”活动总结
2016/04/01 职场文书
springboot 启动如何排除某些bean的注入
2021/08/02 Java/Android
分享Python获取本机IP地址的几种方法
2022/03/17 Python
20180830晚上第一届KSL半决赛 雨神vs解冻(二龙 三炮解说)
2022/04/01 星际争霸
mysql 8.0.27 绿色解压版安装教程及配置方法
2022/04/20 MySQL