zoukankan      html  css  js  c++  java
  • js的小效果-图片放大镜效果

    <!DOCTYPE html>
    <html>
    <head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>
    *{margin: 0;padding:0;}
    #small{
    350px;
    height:350px;
    border:1px solid #000;
    position:relative;
    float: left;
    margin-right: 20px;

    }
    #big img{
    position: absolute;
    }
    #mask{
    display: block;
    50px;
    height:50px;
    opacity:0.5;
    background: red;
    display: none;
    position: absolute;
    left:0;
    top:0;
    }
    #big{
    350px;
    height:350px;
    float:left;
    border:1px solid #000;
    overflow: hidden;
    display: none;
    position: relative;
    }
    </style>
    <script>
    window.onload=function(){
    var oSmall=document.getElementById('small');
    var oMask=document.getElementById('mask');
    var oBig=document.getElementById('big');
    var oImg=document.getElementById('bigimg');
    oSmall.onmouseover=function(){
    oMask.style.display='block';
    oBig.style.display='block';
    };
    oSmall.onmouseout=function(){
    oMask.style.display='none';
    oBig.style.display='none';
    };
    oSmall.onmousemove = function(ev){
    var oEvent = ev || event;
    var l = oEvent.clientX - oMask.offsetWidth/2;
    var t = oEvent.clientY - oMask.offsetHeight/2;
    if(l < 0){
    l= 0;
    }else if(l > oSmall.offsetWidth - oMask.offsetWidth){
    l = oSmall.offsetWidth - oMask.offsetWidth;
    }
    if(t < 0){
    t = 0;
    }else if(t >oSmall.offsetHeight - oMask.offsetHeight){
    t = oSmall.offsetHeight - oMask.offsetHeight;
    }
    oMask.style.left = l + 'px';
    oMask.style.top = t + 'px';
    oImg.style.left=l*(oBig.offsetWidth-oImg.offsetWidth)/
    (oSmall.offsetWidth-oMask.offsetWidth)+'px';
    oImg.style.top=t*(oBig.offsetHeight-oImg.offsetHeight)/
    (oSmall.offsetHeight-oMask.offsetHeight)+'px';

    }
    oSmall.onmousemove=function(ev){
    var oEvent=ev||event;
    var l=oEvent.clientX-oMask.offsetWidth/2;
    var t=oEvent.clientY-oMask.offsetHeight/2;
    if(l<0){
    l=0;
    }else if(l > oSmall.offsetWidth - oMask.offsetWidth){
    l=oSmall.offsetWidth-oMask.offsetWidth;
    }
    if(t<0){
    t=0;
    }else if(t>oSmall.offsetHeight-oMask.offsetHeight){
    t=oSmall.offsetHeight-oMask.offsetHeight;
    }
    oMask.style.left=l+'px';
    oMask.style.top=t+'px';
    oImg.style.left=l*(oBig.offsetWidth-oImg.offsetWidth)/
    (oSmall.offsetWidth-oMask.offsetWidth)+'px';
    oImg.style.top=t*(oBig.offsetHeight-oImg.offsetHeight)/
    (oSmall.offsetHeight-oMask.offsetHeight)+'px';
    }
    }
    </script>
    </head>
    <body>
    <div id="small">
    <img src="img/s.jpg" alt=""/>
    <span id="mask"></span>
    </div>
    <div id="big">
    <img src="img/b.jpg" alt="" id="bigimg"/>
    </div>

    </body>
    </html>

  • 相关阅读:
    Oracle如何定义两个数组变量
    Oracle 数组定义
    Oracle的Number对应C#数据类型
    Oracle删除临时表
    我的第一个Flutter 项目(电商)
    Dart Mac 安装环境(无敌)
    React Native 问题(运行)
    TS的一些用法和普通的对比(Vue)
    vue2.0和vue3.0的响应式原理
    简易orm 主要是为了旧平台查询方便
  • 原文地址:https://www.cnblogs.com/HUANGRONG888/p/6055760.html
Copyright © 2011-2022 走看看