zoukankan      html  css  js  c++  java
  • JS 实现图片放大效果

    <!DOCTYPE html>
    <html>
    <head>
      <meta charset="utf-8"/>
      <title></title>
      <style type="text/css">
      #div1 {
        300px;
        height:300px;
        position:relative;
        margin:30px auto 0px;
      }
      #div1 img{
         300px;
      }
       #div1 span {
        150px;
        height:150px;
        background:red;
        position:absolute;
        left:0px;
        top:0px;
        display:none;
        opacity:0.2;
      }
      .show {
        100%;
        height:100%;
        background:red;
        position:absolute;
        left:0px; top:0px;
        z-index:10px;
        opacity:0.1;
      }
      #div2 {
        300px;
        height:300px;
        position:relative;
        top: -300px;
        left: 300px;
        display:none;
        overflow:hidden;
        margin:0px auto 0px;
      }
      #img1 {
        position:absolute;
      }
      </style>
      </head>
      <body>
        <div id="div1">
          <!-- 图片 -->
          <img src="images/xiangqing.png" alt="">
          <!-- 鼠标选中框 -->
          <span></span>
          <!-- 背景 -->
          <div class="show"></div>
        </div>
        <div id="div2">
          <!-- 放大后的图片 -->
          <img id="img1" src="images/xiangqingda.png" />
        </div>
    </body>
    <script>
      

      // 加载完成后显示
      window.onload=function () {
        var oDiv=document.getElementById('div1');
        var oShow=document.getElementsByClassName('show')[0];
        var oSpan=document.getElementsByTagName('span')[0];
        var oImg=document.getElementById('img1');
        // parentNode获得父节点
        oShow.onmouseover=function() {
        oSpan.style.display='block';
        oImg.parentNode.style.display='block';
        };
        oShow.onmouseout=function() {
          oSpan.style.display='';
          oImg.parentNode.style.display='';
        };
        // 放大器移动
        oShow.onmousemove=function(ev) {
        // 解决浏览器兼容问题
        var oEvent=ev||event;
        // 获得鼠标的位置
        var x=oEvent.offsetX-oSpan.offsetWidth/2;
        var y=oEvent.offsetY-oSpan.offsetHeight/2;

        // console.log(oEvent.clientY);
        // console.log(oDiv.offsetTop);
        // console.log(oSpan.offsetHeight/2);
        // console.log(oEvent.clientY);

        if(x<0) {
          x=0;
        } else if(x>oShow.offsetWidth-oSpan.offsetWidth) {
          x=oShow.offsetWidth-oSpan.offsetWidth;
        } if(y<0) {
          y=0;
        } else if(y>oShow.offsetHeight-oSpan.offsetHeight) {
          y=oShow.offsetHeight-oSpan.offsetHeight;
        }
        // 给选中框定位
        oSpan.style.left=x+'px';
        oSpan.style.top=y+'px';
        // 给放大器定位
        var percentX=x/(oShow.offsetWidth-oSpan.offsetWidth);
        var percentY=y/(oShow.offsetHeight-oSpan.offsetHeight);
        var oImgparent=oImg.parentNode;
        oImg.style.left=-percentX*(oImg.offsetWidth-oImgparent.offsetWidth)+'px';
        oImg.style.top=-percentY*(oImg.offsetHeight-oImgparent.offsetHeight)+'px';
      };
    };


    </script>
    </html>

  • 相关阅读:
    SQLSERVER服务器配置
    JS中的call()和apply()方法 青青
    JS || && 青青
    map() 和 forEach() 区别 兼容写法 青青
    ECMAScript arguments 对象 青青
    jsonp 青青
    Tomcat工作原理
    C博客作业02循环结构
    c语言第0次作业
    C语言博客作业03函数
  • 原文地址:https://www.cnblogs.com/jc5426226/p/5853410.html
Copyright © 2011-2022 走看看