仿京东放大镜

仿京东放大镜

在这里插入图片描述
html:

 <div class="content">
      <div class="preview_img">
        <img src="https://img0.baidu.com/it/u=3311900507,1448170316&fm=26&fmt=auto&gp=0.jpg" alt="" />
        <div class="cub"></div>
      </div>
      <div class="big">
        <img src="https://img0.baidu.com/it/u=3311900507,1448170316&fm=26&fmt=auto&gp=0.jpg" alt="" />
      </div>
    </div>

CSS :

 .content {
        width: 400px;
        height: 400px;
        cursor: move; 
      }
      .preview_img{
        position: relative;
        height: 400px;
      }
      img {
        width: 100%;
      }
      .cub {
        width: 100px;
        height: 100px;
        background-color: rgb(190, 218, 70, 0.75);
        position: absolute;
        top: 0;
        left: 0;
        display: none;
        pointer-events: none;
      }
      .big {
        width: 300px;
        height: 300px;
        margin: 10px;
        font-size: 0;
        display: none;
        overflow: hidden;
        position: absolute;
        top: 0;
        left: 410px;
      }
      .big img {
        width: 500px;
        height: 500px;
        position: absolute;
        top: 0;
        left: 0;
      }

JS:

var content = document.querySelector('.content');
var img = document.querySelector('.content img');
var cub = document.querySelector('.cub');
var big_pic = document.querySelector('.big img');
var big = document.querySelector('.big');
var preview_img=document.querySelector('.content .preview_img');
img.onmouseenter = function () {
  cub.style.display = "block";
  big.style.display = "block";
  // console.log('鼠标移入');
}
img.onmouseleave = function () {
  cub.style.display = "none";
  big.style.display = "none";
  // console.log('鼠标移除');
}
preview_img.onmousemove = function (e) {
  //获取鼠标相对与图片的坐标
  var offsetX = e.pageX - preview_img.offsetLeft;
  var offsetY = e.pageY - preview_img.offsetTop;
  //实时计算黄色快相对于图片的横向和纵向坐标
  var left = offsetX - cub.offsetWidth / 2;
  var top = offsetY - cub.offsetHeight / 2;
  //遮罩层最大移动距离
  var maskMax = preview_img.offsetWidth - cub.offsetWidth;
  left = left <= 0 ? 0 : (left >= this.offsetWidth - 100 ? (this.offsetWidth - 100) : left);
  top = top <= 0 ? 0 : (top >= this.offsetHeight - 100 ? (this.offsetHeight - 100) : top);
  cub.style.left = left + "px";
  cub.style.top = top + "px";

  //大图片最大移动位置
  var bigMax = big_pic.offsetWidth - big.offsetWidth;
  //大图片移动距离=遮罩层移动距离*大图片最大移动距离/遮罩层最大移动距离
  var bigimgX = left * bigMax / maskMax;
  var bigimgY = top * bigMax / maskMax;
  big_pic.style.left = -bigimgX + "px";
  big_pic.style.top = -bigimgY + "px";
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值