放大镜效果

作者: 不知道取个什么昵称不如娶个媳妇 | 来源:发表于2018-09-12 16:47 被阅读5次

写在最前面:一定要注意设置样式的时候大图片和小图片的width,height是有比例关系的;
废话不多说,直接放效果图


image.png

关于tools.js的一堆废话,这是一个自己封装的函数
放代码

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<style>
    *{
        margin: 0px;
        padding: 0px;
    }
    .middle{
        width: 400px;
        height: 400px;
        display: inline-block;
        position: relative;
        margin: 50px ;
    }
    .middle img{
        width: 400px;
        height: 400px;
    }
    .middle .sbox{
        width: 200px;
        height: 200px;
        background: rgba(1, 1, 3, 0.5);
        position: absolute;
        top: 0;
        left: 0;
        display: none;
    }
    .bigbox{
        width: 400px;
        height: 400px;
        overflow: hidden;
        display: inline-block;
        position: relative;
        display: none;
    }
    .bigbox img{
        width: 800px;
        height: 800px;
        position: absolute;
        left: 0;
        top: 0;
    }
</style>
<body>
    <div class="middle">
        <div class="image">
            <img src="images/3e87bfcd0f787b3ce12001faa7bd649a.jpg" alt="">
      </div>
        <div class="sbox"></div>
    </div>
    <div class="bigbox">
        <img src="images/3e87bfcd0f787b3ce12001faa7bd649a.jpg" alt="" id="imgbig">
    </div>
    <script src="tools.js"></script>
    <script>
       window.onload = function(){
        var middle_ = $(".middle")[0];
        var sbox_ = $(".sbox")[0];
        console.log(sbox_);
        var bigbox = $(".bigbox")[0];
        var img_ = $("#imgbig");
        var middle_X = middle_.offsetLeft;//获取 middle 盒子距离有定位父元素的 left 值
        var middle_Y = middle_.offsetTop;//获取 middle 盒子距离有定位父元素的 top 值
        // console.log(middle_X,middle_Y);
        var middle_width = middle_.offsetWidth;//获取 middle 盒子的宽度
        var middle_height = middle_.offsetHeight;//获取 middle 盒子的高度
      
        // console.log(middle_width)
        middle_.onmouseenter = function(){//鼠标移入 middle 显示焦点小方块 和 放大方块
            sbox_.style.display = "block";
            // /console.log(sbox_.style.display);
            bigbox.style.display = "inline-block";
        }
        middle_.onmouseleave = function(){//鼠标移出 middle 隐藏焦点小方块 和 放大方块
            sbox_.style.display = "none";
            // /console.log(sbox_.style.display);
            bigbox.style.display = "none";
        }

        middle_.onmousemove = function(event){
            var sbox_width = sbox_.offsetWidth;//由于焦点小方块是在鼠标移入middle之后才显示,所以得在鼠标移入以后才获取得到他的宽度
            var sbox_height = sbox_.offsetHeight;//焦点小方块高度
            var style_left = event.pageX - middle_X -sbox_width/2;//event.pageX鼠标在文档内的x值,这里相当于将焦点盒子向左上移动了sbox_width/2
            var style_top = event.pageY - middle_Y -sbox_height/2;


            if(style_left<=0){//判定左边界
                style_left = 0 ;
            }
            if(style_left >= middle_width/2){//判定右边界
                style_left = middle_width/2;
            }
            if(style_top<=0){//判定上边界
                style_top = 0 ;
            }
            if(style_top >= middle_height/2){//判定下边界
                style_top = middle_height/2 ;
            }
            
            sbox_.style.left = style_left + "px";//让小盒子随着鼠标移动
            sbox_.style.top = style_top + "px";

            img_.style.left = -middle_width/sbox_width * style_left + "px";//让图片随着小盒子移动 成比例 反方向
            img_.style.top = -middle_height/sbox_height * style_top + "px";
            // console.log( -middle_height/sbox_height)
        }

       }
    </script>
</body>
</html>

我自认为注释比较清楚。。。。。。。。。。。。。。。。。。。。

相关文章

  • iOS放大镜效果实现-ASMagnifierManger

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

  • 放大镜效果

    写在最前面:一定要注意设置样式的时候大图片和小图片的width,height是有比例关系的;废话不多说,直接放效果...

  • 放大镜效果

    基本原理,左边有一个盛放图片的容器,里面有哥哥小的遮罩用来提示把那一部分展示到右边的大的展示放大之后的图片的部分左...

  • 放大镜效果

    商城中常用的图片放大效果 简书会自动上传外链图片,所以这里代码里面img标签里面对应的换两个地址【@换成.】,ht...

  • 放大镜效果

    *{ margin:0; padding:0; } body{ width: 960p...

  • 放大镜效果

  • 放大镜效果

    核心原理1、鼠标经过遮罩层显示,离开隐藏;2、移动鼠标遮罩层跟随,鼠标超出大盒子后遮罩层不跟随出框;3、移动遮罩层...

  • 十.放大镜效果的demo

    详情页放大镜效果收录 Javascript HTML CSS

  • js 放大镜效果

    *{ margin:0; padding:0;} box{ pos...

  • JS 放大镜效果

    效果在这里!!~ CSS样式 HTML 布局 js部分~ 转载请注明出处喔~

网友评论

    本文标题:放大镜效果

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