放大镜

作者: 奶瓶SAMA | 来源:发表于2017-11-20 21:17 被阅读0次

放大镜:淘宝等电商页面应用广泛...
思路:先让move块和bimg块隐藏,当鼠标移动到box上时,使move块和bimg块显示,获取鼠标当前的位置,然后经过计算给与move块和bimg块适当的值实现放大镜效果

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>放大镜</title>
        <style type="text/css">
            *{
                margin: 0;padding: 0;
                }
            #magnifier {
                width: 800px;
                position: relative;
                margin: 50px 50px;
                }
            #magnifier #sImg{
                width: 360px;
                height: 360px;
                border: 1px solid #ccc;
                float: left;
                cursor: move;
                }
            #magnifier #move{
                width: 180px;
                height: 180px;
                position: absolute;
                top: 0;
                left: 0;
                background:#000;
                opacity: .3;
                display: none;
                }
            #magnifier #bImg{
                width: 420px;
                height: 420px;
                border: 1px solid #ccc;
                float: right;
                overflow: hidden;
                display: none;
                position: relative;
                }   
            #pic {
                position: absolute;
                top: 0;
                left: 0;
                }
        </style>
    </head>
    <body>
        <div id="magnifier">
            <div id="sImg">
                <img src="img/pic.jpg" width="360" height="360"/>
                <span id="move"></span>
            </div>
            <div id="bImg">
                <img src="img/pic.jpg" height="800" width="800" id="pic"/>
            </div>
        </div>
        <script type="text/javascript">
            var mag = document.getElementById("magnifier"); //获取大盒子
            var sImg = document.getElementById("sImg");//获取左边盒子
            var oMove = document.getElementById("move");//获取小黑框
            var bImg = document.getElementById("bImg");//右边的盒子
            var oPic = document.getElementById("pic");//右边图片
            sImg.onmouseover = function(){  //鼠标移入小图片显示滑块跟大图片
                oMove.style.display = 'block';
                bImg.style.display = 'block';
            }
            sImg.onmouseout = function(){ //鼠标移出小图片隐藏滑块跟大图片
                oMove.style.display = 'none';
                bImg.style.display = 'none';
            }
            sImg.onmousemove = function( ev ){ //当鼠标进入小图片时让小滑块移动
                ev = ev || event; //事件对象
                var mL = mag.offsetLeft; // 大DIV的距离左面的距离
                var mT = mag.offsetTop;  // 大DIV的距离上面的距离
                //为了让鼠标居中,拿到小滑块自身的宽度除以2
                var mW = oMove.offsetWidth / 2; 
                //为了让鼠标居中,拿到小滑块自身的高度除以2
                var mH = oMove.offsetHeight / 2;
                var x = ev.clientX - mL - mW; //拿到当前鼠标在小图片内的x轴移动位置
                var y = ev.clientY - mT - mH; //拿到当前鼠标在小图片内的Y轴移动位置
                var mMw = sImg.offsetWidth - oMove.offsetWidth; //算出小滑块最大的移动宽度 
                var mMh = sImg.offsetHeight - oMove.offsetHeight; //算出小滑块最大的移动高度
                if( x < 0 ){  //如果当前距离小于0,强制让他等于0
                    x = 0;
                }else if( x > mMw ){ 
                //如果当前距离大于小滑块最大的移动宽度,那么让他当前的位置等于小滑块最大的移动宽度
                    x = mMw;
                };
                if( y < 0 ){ //如果当前距离小于0,强制让他等于0
                    y = 0;
                }else if( y > mMh ){ 
                //如果当前距离大于小滑块最大的移动高度,那么让他当前的位置等于小滑块最大的移动高度
                    y = mMh;
                };
                oMove.style.left = x + 'px'; //把当前的位置赋给小滑块
                oMove.style.top = y + 'px'; //把当前的位置赋给小滑块
                //算比例,算大图对应小图的比例
                var preX = x / mMw; 
                var preY = y / mMh;
                //赋值
                oPic.style.left = -preX*( oPic.offsetWidth - bImg.offsetWidth )+'px';
                oPic.style.top = -preY*( oPic.offsetHeight - bImg.offsetHeight )+'px';
            }
        </script>
    </body>
</html>

相关文章

  • iOS放大镜效果实现-ASMagnifierManger

    ASMagnifierManger 放大镜效果。可更改放大倍数和放大镜大小 特点介绍 放大镜效果 放大镜形状自定义...

  • 2018-12-02

    放大镜 HTML 放大镜 ...

  • 放大镜

    一、多种图片放大镜 二、单张图片放大镜

  • 2018-06-09

    对待学生要用“放大镜”“反光镜”和“显微镜” 教师对待学生要用“放大镜”“反光镜”和“显微镜”。“放大镜”---...

  • 涓涓说(20220522)

    【放大镜】 涓涓:妈妈,放大镜是不是凹凸镜? 妈妈:(不确定地)是吧。 涓涓:那为什么地球仪上的放大镜是平面的? ...

  • 放大镜

    我用放大镜寻找快乐 点滴的快乐瞬间填满心房 我用放大镜寻找幸福 涓涓幸福的细流变成辽阔海洋 我用放大镜寻找希望 迷...

  • 自己看自己,总会带着放大镜

    这个放大镜,要看放大倍数多高,以及使用放大镜的频次。 放大镜是用来给自己复盘的,工作中,比自己级别的高的领导突然问...

  • 放大镜的写法

    放大镜的难点:

  • 父母的爱情小故事1

    母亲认真举着放大镜看数据, 父亲路过,乐颠颠的开玩笑:放大镜举起来看看你的牛蛋眼。 母亲反手把放大镜举高放父亲脸前...

  • TableView 索引放大镜

    //一般把放大镜放在最顶部的位置。这样设置放大镜 、- (NSInteger) tableView:(UITabl...

网友评论

      本文标题:放大镜

      本文链接:https://www.haomeiwen.com/subject/leybvxtx.html