美文网首页
放大镜的写法

放大镜的写法

作者: 一只小裸熊 | 来源:发表于2016-08-23 10:08 被阅读0次

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>放大镜</title>
    <style>
        #leftWrap{
            position: relative;
            width: 300px;
            height: 300px;
            border: 1px solid black;
            float: left;
        }
        #leftWrap img{
            width: 300px;
            height: 300px;
            position: absolute;
        }
        #slider{
            width: 150px;
            height: 150px;
            background: rgba(0,0,0,0.5);
            position: absolute;
            top: 0;
            left: 0;
            cursor: pointer;
            display: none;
        }
        #rightWrap{
            position: relative;
            width: 300px;
            height: 300px;
            border: 1px solid black;
            float: left;
            left: 50px;
            display: none;
            overflow: hidden;
        }
        #img1{
            width: 600px;
            height: 600px;
            position: absolute;
            top: 0;
            left: 0;
        }
    </style>
</head>
<body>
    <div id="leftWrap">
        <img src="img/2.jpg" alt="">
        <div id="slider"></div>
    </div>
    <div id="rightWrap">
        <img src="img/2.jpg" alt="" id="img1">
    </div>
</body>
    <script>
        var leftWrap=document.getElementById('leftWrap');
        var rightWrap=document.getElementById('rightWrap');
        var img1=document.getElementById('img1');
        var slider=document.getElementById('slider');
        var maxImg=rightWrap.children[0];

        // 鼠标放在左边时右边显示
        leftWrap.onmousemove=function(event){
            rightWrap.style.display="block";
            slider.style.display='block';

            // 获取鼠标左右移动
            var event=event||window.event;
            // 获取slider的宽度
            // var sliderWidth=slider.offsetWidth;
            // 当前鼠标的坐标点=可视区的距离-容器的偏移量
            var disX=event.clientX-leftWrap.offsetLeft;
            // 鼠标点在slider的中心
            var x=disX-(slider.offsetWidth/2);
            // 获取slider移动的最大宽度
            var maxWidth=leftWrap.clientWidth-slider.offsetWidth;
            if (x<=0) {
                x=0;
            }else if (x>=maxWidth) {
                x=maxWidth;
            }
            slider.style.left=x+"px";

            // 获取鼠标上下移动
            // 获取slider的高度
            // var sliderHeight=slider.offsetHeight;
            // 获取鼠标的坐标点=可视的高度-容器距离上部的距离
            var disY=event.clientY-leftWrap.offsetTop;
            //让鼠标点在slider的中心
            var y=disY-(slider.offsetHeight/2);
            // 获取最大移动高度
            var maxHeight=leftWrap.clientHeight-slider.offsetHeight;
            if (y<=0) {
                y=0;
            }else if (y>=maxHeight) {
                y=maxHeight;
            }
            slider.style.top=y+"px";

            // 偏移的比例
            var scaleX=x/maxWidth;
            var scaleY=y/maxHeight;

            img1.style.left=-(maxImg.offsetWidth-rightWrap.offsetWidth)*scaleX+"px";
            img1.style.top=-(maxImg.offsetHeight-rightWrap.offsetHeight)*scaleY+"px";

        }
        // 鼠标离开时左边消失
        leftWrap.onmouseout=function(){
            rightWrap.style.display="none";
            slider.style.display='none';

        }       
    </script>
</html>


放大镜的难点:

1.onmousemove的使用  
2.slider的宽高的比例
4.事件的获取

相关文章

  • 放大镜的写法

    放大镜的难点:

  • requireJS

    js的模块化发展历程 函数式 对象写法 立即执行函数 放大镜模式 宽放大模式 输入全局变量

  • iOS放大镜效果实现-ASMagnifierManger

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

  • 2018-12-02

    放大镜 HTML 放大镜 ...

  • 放大镜

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

  • JS面向对象-灵活的语言

    验证函数的多种写法: 写法一: 写法二: 写法三: 写法四: 写法五: 写法六: 写法七: 写法八: 除此之外,如...

  • 2018-06-09

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

  • 涓涓说(20220522)

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

  • 模块化

    写法1 写法2 写法3 写法4 写法5

  • ES6 模块化

    写法1 写法2 写法3 写法4 写法5

网友评论

      本文标题:放大镜的写法

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