最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript仿京東放大鏡效果

 更新時(shí)間:2021年10月27日 10:14:25   作者:今天會(huì)下雨嗎  
這篇文章主要為大家詳細(xì)介紹了JavaScript仿京東放大鏡效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了JavaScript實(shí)現(xiàn)京東放大鏡效果的具體代碼,供大家參考,具體內(nèi)容如下

案例分析

  • 整個(gè)案例可以分為三個(gè)功能模塊
  • 鼠標(biāo)經(jīng)過小圖片盒子, 黃色的遮擋層 和 大圖片盒子顯示,離開隱藏2個(gè)盒子功能
  • 黃色的遮擋層跟隨鼠標(biāo)功能。
  • 移動(dòng)黃色遮擋層,大圖片跟隨移動(dòng)功能。
  • 鼠標(biāo)經(jīng)過小圖片盒子, 黃色的遮擋層 和 大圖片盒子顯示,離開隱藏2個(gè)盒子功能
  • 就是顯示與隱藏

  • 移動(dòng)黃色遮擋層,大圖片跟隨移動(dòng)功能,大圖片的移動(dòng)距離要跟黃色遮擋層的比例相等。
  • 求大圖片的移動(dòng)距離公式

代碼

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .preview_wrap {
            width: 400px;
            height: 400px;
        }

        .preview_img {
            position: relative;
            height: 398px;
            border: 1px solid #ccc;
        }

        .mask {
            display: none;
            position: absolute;
            top: 0;
            left: 0;
            width: 300px;
            height: 300px;
            background: #FEDE4F;
            opacity: .5;
            border: 1px solid #ccc;
            cursor: move;
        }

        .big {
            display: none;
            position: absolute;
            left: 410px;
            top: 0;
            width: 500px;
            height: 500px;
            background-color: pink;
            z-index: 999;
            border: 1px solid #ccc;
            overflow: hidden;
        }

  /* 要給圖片加了絕對(duì)定位,才可以設(shè)置 left top */
        .big img {
            position: absolute;
            top: 0;
            left: 0;
        }
    </style>
</head>
<body>
    <div class="preview_wrap">
        <div class="preview_img">
            <img src="images/s3.png" alt="">
            <div class="mask"></div>
            <div class="big">
                <img src="images/big.jpg" alt="" class="bigImg">
            </div>
        </div>
    </div>
    <script>
     var preview_img = document.querySelector('.preview_img');
     var mask = document.querySelector('.mask');
     var big = document.querySelector('.big');
     // 1. 當(dāng)我們鼠標(biāo)經(jīng)過 preview_img 就顯示和隱藏 mask 遮擋層 和 big 大盒子
     preview_img.addEventListener('mouseover', function() {
         mask.style.display = 'block';
         big.style.display = 'block';
     })
     preview_img.addEventListener('mouseout', function() {
             mask.style.display = 'none';
             big.style.display = 'none';
         })
         // 2. 鼠標(biāo)移動(dòng)的時(shí)候,讓黃色的盒子跟著鼠標(biāo)來走
     preview_img.addEventListener('mousemove', function(e) {
         // (1). 先計(jì)算出鼠標(biāo)在盒子內(nèi)的坐標(biāo)
         var x = e.pageX - this.offsetLeft;
         var y = e.pageY - this.offsetTop;
         // console.log(x, y);
         // (2) 減去盒子高度 300的一半 是 150 就是我們mask 的最終 left 和top值了
         // (3) 我們mask 移動(dòng)的距離
         var maskX = x - mask.offsetWidth / 2;
         var maskY = y - mask.offsetHeight / 2;
         // (4) 如果x 坐標(biāo)小于了0 就讓他停在0 的位置
         // 遮擋層的最大移動(dòng)距離
         var maskMax = preview_img.offsetWidth - mask.offsetWidth;
         if (maskX <= 0) {
             maskX = 0;
         } else if (maskX >= maskMax) {
             maskX = maskMax;
         }
         if (maskY <= 0) {
             maskY = 0;
         } else if (maskY >= maskMax) {
             maskY = maskMax;
         }
         mask.style.left = maskX + 'px';
         mask.style.top = maskY + 'px';
         // 3. 大圖片的移動(dòng)距離 = 遮擋層移動(dòng)距離 * 大圖片最大移動(dòng)距離 / 遮擋層的最大移動(dòng)距離
         // 大圖
         var bigIMg = document.querySelector('.bigImg');
         // 大圖片最大移動(dòng)距離
         var bigMax = bigIMg.offsetWidth - big.offsetWidth;
         // 大圖片的移動(dòng)距離 X Y
         var bigX = maskX * bigMax / maskMax;
         var bigY = maskY * bigMax / maskMax;
         bigIMg.style.left = bigX + 'px';
         bigIMg.style.top = bigY + 'px';
 
     })
    </script>
</body>
</html>

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

大方县| 邯郸县| 翁牛特旗| 柯坪县| 五寨县| 巨野县| 石阡县| 平罗县| 阳城县| 秀山| 寿阳县| 东台市| 固阳县| 铁岭市| 新疆| 乐安县| 美姑县| 调兵山市| 孟连| 涟水县| 贺兰县| 怀化市| 平南县| 新营市| 儋州市| 谢通门县| 永顺县| 固阳县| 肥西县| 仪征市| 阿坝县| 白银市| 麻江县| 黄平县| 浦东新区| 阿荣旗| 陇川县| 滦平县| 留坝县| 芒康县| 鸡泽县|