• 仿京东放大镜效果


    案例分析:

    1.整个案例可以分为三个功能模块;

    2.鼠标经过小图片盒子,黄色的遮挡层和大图片盒子显示,离开时2个盒子隐藏功能

    3.黄色的遮挡层跟随鼠标移动功能;

    4.移动黄色遮挡层,大图片跟随移动功能。

    效果:

    代码:

    html部分

     1 <!DOCTYPE html>
     2 <html lang="en">
     3     <head>
     4         <meta charset="UTF-8">
     5         <title>仿京东放大镜效果</title>
     6         <link rel="stylesheet" href="detail.css">
     7         <script src="detail.js"></script>
     8     </head>
     9     <body>
    10         <div class="preview">
    11             <img src="../图片/iphone.png" alt="" class="preview_img">
    12             <div class="mask"></div>
    13             <div class="big">
    14                 <img src="../图片/big.jpg" alt="" class="big_img">
    15             </div>
    16         </div>
    17     </body>
    18 </html>
    View Code

    css部分

     1 *{
     2     margin: 0;
     3     padding: 0;
     4 }
     5 .preview{
     6     width: 250px;
     7     height: 250px;
     8     border: 1px solid #ebebeb;
     9     margin: 50px 0 0 50px;
    10     text-align: center;
    11 }
    12 .preview_img{
    13     position: relative;
    14     width: 250px;
    15 }
    16 .mask{
    17     display: none;
    18     position: absolute;
    19     width: 150px;
    20     height: 150px;
    21     background-color: rgba(245, 201, 56, 0.4);
    22     top: 0;
    23     left: 0;
    24     border: 1px solid #ccc;
    25     margin: 50px 0 0 50px;
    26     cursor: move;
    27 }
    28 .big{
    29     display: none;
    30     position: absolute;
    31     width: 600px;
    32     height: 600px;
    33     left: 450px;
    34     top: 20px;
    35     z-index: 999;
    36     border: 1px solid #ccc;
    37     overflow: hidden;
    38 }
    39 .big_img{
    40     position: absolute;  /*添加了定位才可以移动*/
    41     top: 0;
    42     left: 0;
    43     width: 1000px;
    44 }

    js部分

     1 // 因为是外部的js,所以要等页面加载完毕执行
     2 window.addEventListener('load',function(){
     3     var preview = document.querySelector('.preview');
     4     var mask = document.querySelector('.mask');
     5     var big = document.querySelector('.big');
     6     //1.当我们鼠标经过preview就显示和隐藏mask遮挡层和big大盒子
     7     preview.addEventListener('mouseover',function(){
     8         mask.style.display = 'block';
     9         big.style.display = 'block';
    10     })
    11     preview.addEventListener('mouseout',function(){
    12         mask.style.display = 'none';
    13         big.style.display = 'none';
    14     })
    15     //2.鼠标移动事件
    16     preview.addEventListener('mousemove',function(e){
    17         //(1)先计算出鼠标在盒子内的坐标
    18         var x = e.pageX - preview.offsetLeft;
    19         var y = e.pageY - preview.offsetTop;
    20         //(2)减去盒子宽度和高度的一半(x - mask.offsetWidth / 2)  
    21         //(3)限制遮挡层移动范围
    22         var maskX = x -mask.offsetWidth / 2;
    23         var maskY = y -mask.offsetHeight / 2;
    24         //遮挡层的最大移动距离
    25         var maskMax = preview.offsetWidth - mask.offsetWidth;  //因为是正方形,width和height用一个就行
    26         if(maskX <= 0){
    27             maskX = 0;
    28         }else if(maskX >= maskMax){
    29             maskX = maskMax;
    30         }
    31         if(maskY <= 0){
    32             maskY = 0;
    33         }else if(maskY >= maskMax){
    34             maskY = maskMax;
    35         }
    36         mask.style.left = maskX + 'px';
    37         mask.style.top = maskY + 'px';
    38         //3.大图片跟随移动功能
    39         // 大图片移动距离=遮挡层移动距离*大图片最大移动距离/遮挡层最大移动距离
    40         var bigImg = document.querySelector('.big_img');
    41         //大图片最大移动距离
    42         var bigMax = big.offsetWidth - bigImg.offsetWidth;
    43         //大图片的移动距离
    44         var bigX = maskX * bigMax / maskMax;
    45         var bigY = maskY * bigMax / maskMax;
    46         bigImg.style.left = bigX + 'px';    //这个地方视频上说加-号,我没有加的效果是好的,不清楚?
    47         bigImg.style.top = bigY + 'px';
    48     })
    49 })
  • 相关阅读:
    制作你的第一个HTML 5游戏
    拒绝臆想,让我们脚踏实地做设计!
    HTML 5或者Silverlight?
    如何替换掉回车键
    杀死团队的武器与修复团队的方法
    Google趋势中显示jQuery是最流行的JavaScript框架
    关于脚本载入器的思考
    简化Web开发的12个HTML5CSS框架
    线框图(demo草图)制作的总结
    江苏南通周边经纬度
  • 原文地址:https://www.cnblogs.com/cy1227/p/12980910.html
Copyright © 2020-2023  润新知