js基础应用篇 - 放大镜

放大镜效果

在这里插入图片描述

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>放大镜</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        #fdj{
            height: 418px;
            width: 418px;
            position: relative;
        }
        .small{
            height: 418px;
            width: 418px;
        }
        .small img{
            height: 418px;
            width: 418px;
        }
        .big{
            position: absolute;
            height: 418px;
            width: 418px;
            left: 450px;
            top: 0;
            overflow: hidden;
            display: none;
        }
        .big-img{
            position: absolute;
            left: 0;
            top: 0;
        }
        .mask{
            width: 200px;
            height: 200px;
            background: rgba(255,255,0,0.3);
            position: absolute;
            left: 0;
            top: 0;
            display: none;
        }
    </style>
    <script>
      window.onload  = function () {
          var small = document.querySelector('.small');
          var big = document.querySelector('.big');
          var mask = document.querySelector('.mask');
          var bigimg = document.querySelector('.big-img');
          small.onmouseover = function () {
              mask.style.display = 'block';
              big.style.display = 'block';

              small.onmousemove = function (event) {
                  event = event || window.event;
                  var x = event.pageX  - mask.offsetWidth/2;
                  var y = event.pageY  - mask.offsetHeight/2;

                  if (x <= 0) {
                      x  = 0;
                  }
                  if (x >= small.offsetWidth - mask.offsetWidth){
                      x =  small.offsetWidth - mask.offsetWidth ;
                  }
                  if (y <= 0) {
                      y = 0;
                  }
                  if (y >= small.offsetHeight - mask.offsetHeight){
                      y =  small.offsetHeight - mask.offsetHeight ;
                  }
                  mask.style.left = x + 'px' ;
                  mask.style.top = y + 'px' ;
                  bigimg.style.left = - x *bigimg.offsetWidth/small.offsetWidth + 'px';
                  bigimg.style.top = - y *bigimg.offsetHeight/small.offsetHeight + 'px';
              };
              small.onmouseout = function () {
                  small.onmousemove = null;
                  mask.style.display = 'none';
                  big.style.display = 'none';
              }
          }
       };  
    </script>
</head>
<body>
<div id="fdj">
    <div id="small" class="small">
      <
      img src="img/leftimg.jpg" alt="">
        <div class="mask"></div>
    </div>

    <div class="big">
        <
       img src="img/rimg.jpg" alt="" class="big-img">
    </div>
</div>
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值