用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 表单下所有元素的隐藏
Jul 25 Javascript
JQuery上传插件Uploadify使用详解及错误处理
Apr 27 Javascript
把jQuery的类、插件封装成seajs的模块的方法
Mar 12 Javascript
javascript实现淘宝幻灯片广告展示效果
Apr 27 Javascript
jquery实现表单验证简单实例演示
Nov 23 Javascript
js和jquery实现监听键盘事件示例代码
Jun 24 Javascript
JavaScript的instanceof运算符学习教程
Jun 08 Javascript
AngularJS实现一次监听多个值发生的变化
Aug 31 Javascript
js实现手机拍照上传功能
Jan 17 Javascript
JavaScript实现打地鼠小游戏
Apr 23 Javascript
jquery 一键复制到剪切板的实例
Sep 20 jQuery
JavaScript中为事件指定处理程序的五种方式分析
Jul 27 Javascript
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
轻松修复Discuz!数据库
2008/05/03 PHP
CI框架开发新浪微博登录接口源码完整版
2014/05/28 PHP
PHP中的多种加密技术及代码示例解析
2016/10/20 PHP
Yii2框架数据验证操作实例详解
2018/05/02 PHP
php实现通过stomp协议连接ActiveMQ操作示例
2020/02/23 PHP
php实现简单四则运算器
2020/11/29 PHP
深入理解PHP+Mysql分布式事务与解决方案
2020/12/03 PHP
JavaScript Konami Code 实现代码
2009/07/29 Javascript
JavaScript 基础知识 被自己遗忘的
2009/10/15 Javascript
jquery zTree异步加载简单实例分享
2013/02/05 Javascript
jquery通过a标签删除table中的一行的代码
2013/12/02 Javascript
js父页面与子页面不同时显示的方法
2014/10/16 Javascript
5个书写JavaScript代码的坏习惯,看看你中枪了没?
2014/11/06 Javascript
浅谈JavaScript Math和Number对象
2015/01/26 Javascript
轻松学习jQuery插件EasyUI EasyUI创建CRUD应用
2015/11/30 Javascript
微信小程序 Image API实例详解
2016/09/30 Javascript
完美解决jQuery的hover事件在IE中不停闪动的问题
2017/02/10 Javascript
angularjs实现柱状图动态加载的示例
2017/12/11 Javascript
JS对象与json字符串相互转换实现方法示例
2018/06/14 Javascript
pm2发布node配置文件ecosystem.json详解
2019/05/15 Javascript
vue中解决chrome浏览器自动播放音频和MP3语音打包到线上的实现方法
2020/10/09 Javascript
如何通过JS实现日历简单算法
2020/10/14 Javascript
[03:23]我的刀塔你不可能这么可爱 第一期金萌萌的故事
2014/06/20 DOTA
用pywin32实现windows模拟鼠标及键盘动作
2014/04/22 Python
Python Tkinter实现简易计算器功能
2018/01/30 Python
python实现的自动发送消息功能详解
2019/08/15 Python
Python 在OpenCV里实现仿射变换—坐标变换效果
2019/08/30 Python
python实现广度优先搜索过程解析
2019/10/19 Python
python读写Excel表格的实例代码(简单实用)
2019/12/19 Python
使用Python实现批量ping操作方法
2020/05/06 Python
html5关于外链嵌入页面通信问题(postMessage解决跨域通信)
2020/07/20 HTML / CSS
庆祝教师节演讲稿
2014/09/03 职场文书
2014年社区民政工作总结
2014/12/02 职场文书
2014年防汛工作总结
2014/12/08 职场文书
结婚老公保证书
2015/02/26 职场文书
幼儿园小朋友毕业感言
2015/07/30 职场文书