jq案例---放大镜

文件列表

在这里插入图片描述

1.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="1.css">
    <script src="../../jquery/jquery-3.5.1.js"></script>
</head>
<body>
    <div class="a">
        <img src="imgs/1.jpg" alt="">
        <div></div>
    </div>
    <div class="b">
        <img src="imgs/1.jpg" alt="">
    </div>
</body>
<script src="1.js"></script>
</html>

1.css

*{
    margin: 0;
    padding: 0;
    outline: none;
    text-decoration: none;
    flex-direction: row;
}
.a,.b{
    width: 200px;
    height: 200px;
    margin: 10px;
}
.a{
    position: relative;
    border: 3px solid red;
}
.a>img{
    width: 100%;
    height: 100%;
}
.a>div{
    width: 100px;
    height: 100px;
    background-color: #000;
    opacity: 0.5;
    position: absolute;
    top:0;
    left: 0;
}
.b{
    border: 3px solid;
    overflow: hidden;
    text-overflow:ellipsis;
    white-space: nowrap;
}
.b>img{
    position: relative;
    top: 0;
    left: 0;
    width: 200%;
    height: 200%;
}
   

1.js

$('.a').mousemove(function(e){
    // 计算 两张图片 宽和高 的放大比例
    var biliWidth = $('.b>img').width() / $('.a>img').width()
    var biliHeight = $('.b>img').height() / $('.a>img').height()
    // 计算鼠标到 .a 的 top和left 的值
    var x = e.clientX - $('.a>img').offset().left
    var y = e.clientY - $('.a>img').offset().top
    // 计算 .a>div 到 .a 的 top和left
    var top = $('.a>div').position().top
    var left = $('.a>div').position().left
    // 设置最大值
    var maxX = $('.a').width() - ( $('.a>div').width() / 2 )
    var maxY = $('.a').height() - ( $('.a>div').height() / 2 )
    // 设置最小值
    var minX = $('.a>div').width() / 2
    var minY = $('.a>div').height() / 2
    // 限定活动范围并
    if (x>=minX && x<=maxX && y>=minY && y<=maxY) {
        // 计算 .a>div 的偏移距离
        top = y - ( $('.a>div').height() / 2 )
        left = x - ( $('.a>div').width() / 2 )
        $('.a>div').css('top', top)
        $('.a>div').css('left', left)
        // 计算 .b>img 的偏移距离
        var bx = '-' + (left * biliWidth) + 'px'
        var by = '-' + (top * biliHeight) + 'px'
        $('.b>img').css('top', by)
        $('.b>img').css('left', bx)
    }
})

1.jpg

在这里插入图片描述

效果

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值