我是靠谱客的博主 潇洒秋天,最近开发中收集的这篇文章主要介绍用js制作淘宝放大镜效果,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

本文实例为大家分享了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>

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

最后

以上就是潇洒秋天为你收集整理的用js制作淘宝放大镜效果的全部内容,希望文章能够帮你解决用js制作淘宝放大镜效果所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(116)

评论列表共有 0 条评论

立即
投稿
返回
顶部