Estuche de lupa de comercio electrónico

Contenido de aprendizaje:


1. La  propiedad event.pageX devuelve la posición del puntero del mouse, en relación con el borde izquierdo del documento.
2. La propiedad del evento clientX devuelve la coordenada horizontal del puntero del mouse relativa a la página del navegador (o área del cliente) cuando se activa el evento.
3. Onmouseenter mouse mueva hacia adentro
4.  onmouseleave mouse move out


Código completo del caso. html + css3 + javascript

Requisitos del caso: cuando el mouse hace clic en la imagen de la izquierda (el mouse es una cruz), se muestra la capa de máscara y se muestra el cuadro de la derecha. Y el centro del movimiento del mouse está en el centro de la capa de la máscara, y el cuadro grande de la derecha muestra el lugar donde se hace clic con el mouse, que se muestra en una proporción de 800: 350. La capa de máscara solo puede especificar el movimiento dentro del cuadro de la izquierda y no excederlo.

                   

/**
    步骤:
        1. 查找元素
            1.1 查找 main 总分区
            1.2 查找 small 盒子
            1.3 查找 small 盒子内的 img 小图片
            1.4 查找 mask 遮罩层
            1.5 查找 big 盒子
            1.6 查找 big 盒子内的 img 大图片

        2. 鼠标移入 main 的时候
            2.1 显示 遮罩盒子
            2.2 显示 大图分区

        3. 鼠标移出 main 的时候
            3.1 隐藏 遮罩盒子
            3.2 隐藏 大图分区

        4. 鼠标在 main 移动的时候 !!!
            4.1 遮罩盒子 跟随 鼠标移动
            4.2 遮罩盒子 在 鼠标中心 处理
            4.3 遮罩盒子 在 分区边界 内移动处理
            4.4 大图片 <反向> <按比例> 跟随 鼠标移动

        注意. 获取元素偏移值和宽高
            1. 获取 分区 的 水平,垂直偏移值
            2. 获取 分区 的 宽度,高度
            3. 获取 遮罩盒子 的 宽度,高度 (隐藏的盒子无法获取宽高)
            4. 获取 大图片 的 宽度,高度 (隐藏的盒子无法获取宽高)
*/

  código HTML:

     

<body>
    <!-- 整个大盒子 -->
    <div class="main" id="main">
        <div class="small">
            <!--小图-->
            <img alt="" class="smallImg" src="../img/iphoneX.jpg" width="350" />
            <!-- 遮挡层,黄色的小方块 -->
            <div class="mask"></div>
        </div>
        <!--大层-->
        <div class="big">
            <!--大图-->
            <img alt="" class="bigImg" src="../img/iphoneX.jpg" width="800" />
        </div>
    </div>
</body>

código CSS:

 <style>
        * {
            margin: 0;
            padding: 0;
        }

        .main {
            width: 350px;
            height: 350px;
            margin: 100px;
            border: 1px solid #ccc;
            position: relative;
        }

        .big {
            width: 400px;
            height: 400px;
            position: absolute;
            top: 0;
            left: 360px;
            border: 1px solid #ccc;
            overflow: hidden;
            display: none;
        }

        .mask {
            width: 175px;
            height: 175px;
            background: rgba(255, 255, 0, 0.4);
            position: absolute;
            top: 0px;
            left: 0px;
            /* 把鼠标指针换成移动图标 */
            cursor: move;
            display: none;
        }

        .small {
            position: relative;
            height: 350px;
            width: 350px;
        }

        .active .mask,
        .active .big {
            display: block;
        }

        .big img {
            /* 相对定位:相对自己原本的位置定位,原来的位置保留的 */
            position: absolute;
        }
    </style>

código javascript:

 

<script>
    //查找元素
    var main = document.querySelector(".main");
    var small = document.querySelector(".small"); //左边小盒子
    var smallImg = document.querySelector(".smallImg");
    var mask = document.querySelector(".mask"); //黄色遮罩层
    var big = document.querySelector(".big");//右边小盒子
    var bigImg = document.querySelector(".big .bigImg");
    
    //2. 鼠标移入 main 的时候
    //2.1 显示 遮罩盒子
   // 2.2 显示 大图分区
    main.onmouseenter=function () {
        mask.style.display="block";
        big.style.display="block";
    };
    main.onmouseleave=function () {
        mask.style.display="none";
        big.style.display="none";
    };
    // 4. 鼠标在 main 移动的时候 !!!
    //     4.1 遮罩盒子 跟随 鼠标移动
    // 4.2 遮罩盒子 在 鼠标中心 处理
    // 4.3 遮罩盒子 在 分区边界 内移动处理
    // 4.4 大图片 <反向> <按比例> 跟随 鼠标移动
    small.onmousemove=function (e) {
        var x=e.pageX-100-(175/2);       //盒子的宽高为300px,因为鼠标默认在左上角。因为需要向左移动自身一半
        var y=e.pageY-100-(175/2);        盒子的宽高为300px,因为鼠标默认在左上角。因为需要向下移动自身一半
        if(x<0) x=0;                     //规定遮罩层移动范围。如果遮罩层超出了小盒子边框,x就重置为0.
        if(y<0) y=0;                     // //规定遮罩层移动范围。如果遮罩层超出了小盒子边框,y就重置为0.
        if(x>175) x=175;                 //遮罩层本身的宽高为175
        if(y>175) y=175;                  
        mask.style.top=(y)+"px";
        mask.style.left=(x)+"px";
        bigImg.style.top=(-y*(800/350))+"px";        //右边放大效果,以800:350显示
        bigImg.style.left=(-x*(800/350))+"px";       //在xy前面加-号是因为需要反向显示
    }
</script>

 

Supongo que te gusta

Origin blog.csdn.net/m0_46564366/article/details/109807512
Recomendado
Clasificación