放大镜效果

效果:

HTML:

<div class="zh-content zh-scrollbar">
    <img class="zh-plane-profile" src="" alt="">
</div>

CSS:

.zh-content{position: relative;}
.zh-plane-profile{position: absolute;z-index: 2;height: 420%;left: 50%;top: 50%;transform: translate(-50%, -50%) rotate(-90deg);}

JS:

// 放大镜
function magnifyGlass(bigImg) {
    // 放大镜元素
    var mgEleId = 'zh_magnify_glass',
        mgEleWth = 200,
        mgEleHgt = 200;
    var mgEle = $('<div id="'+mgEleId+'"></div>');
    mgEle.css({
        position: 'fixed',
        zIndex: 99999,
        width: mgEleWth,
        height: mgEleHgt,
        border: '1px solid #3C7FCD',
        borderRadius: '50%',
        transform: 'rotate(-90deg)',
        overflow: 'hidden'
    });
    // 大图
    var bigImgEle = $('<img src="'+bigImg+'" />');
    bigImgEle.css({
        position: 'absolute',
        zIndex: 2,
        left: 0,
        top: 0
    });
    // 大图加载完成
    bigImgEle[0].onload = function() {
        var bigImgWth = this.width,
            bigImgHgt = this.height;
        mgEle.append(bigImgEle);
        // 事件
        $('.zh-plane-profile').mouseenter(function(e) {
            var imgWth = $(this).height(),
                imgHgt = $(this).width(),
                imgOffetLeft = $(this).offset().left,
                imgOffetTop = $(this).offset().top;
            mgEle.css({
                left: e.clientX-mgEleWth/2,
                top: e.clientY-mgEleHgt/2
            });
            if($('#'+mgEleId).size() == 0) {
                $('body').append(mgEle);
            }
            // 事件
            $(document).on('mousemove', function(e) {
                var endX = e.clientX,
                    endY = e.clientY;
                if(endX<imgOffetLeft || endX>imgWth+imgOffetLeft || endY<imgOffetTop || endY>imgHgt+imgOffetTop) {
                    $('#'+mgEleId).remove();
                    $(document).off('mousemove');
                } else {
                    var translateX = -(endX-imgOffetLeft)/imgWth*bigImgHgt+mgEleWth/2,
                        translateY = -(bigImgWth-(endY-imgOffetTop)/imgHgt*bigImgWth-mgEleHgt/2);
                    $('#'+mgEleId).css({
                        left: endX-mgEleWth/2,
                        top: endY-mgEleHgt/2
                    });
                    $('#'+mgEleId+' img').css({
                        transform: 'translate('+translateY+'px, '+translateX+'px)'
                    });
                }
            });
        });
    }
}
专门建立的学习Q-q-u-n: 731771211,分享学习方法和需要注意的小细节,不停更新最新的教程和学习技巧
(从零基础开始到前端项目实战教程,学习工具,全栈开发学习路线以及规划)

调用:

magnifyGlass('大图url');

原图:

由于原图是竖着的,所以代码里有了针对竖图的处理

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的HTML放大镜效果代码: ```html <!DOCTYPE html> <html> <head> <title>放大镜效果</title> <style> .container { position: relative; width: 400px; height: 400px; } .image { display: block; width: 100%; height: auto; } .zoom { position: absolute; width: 200px; height: 200px; border: 1px solid black; display: none; background-repeat: no-repeat; background-size: 800px 800px; } </style> </head> <body> <div class="container"> <img class="image" src="https://cdn.pixabay.com/photo/2015/04/23/22/00/tree-736885__480.jpg" alt="tree"> <div class="zoom"></div> </div> <script> var container = document.querySelector('.container'); var image = document.querySelector('.image'); var zoom = document.querySelector('.zoom'); container.addEventListener('mousemove', function(e) { var x = e.pageX - this.offsetLeft; var y = e.pageY - this.offsetTop; var imageWidth = image.width; var imageHeight = image.height; var zoomWidth = zoom.offsetWidth; var zoomHeight = zoom.offsetHeight; var zoomX = x - zoomWidth / 2; var zoomY = y - zoomHeight / 2; if (zoomX < 0) zoomX = 0; if (zoomY < 0) zoomY = 0; if (zoomX > imageWidth - zoomWidth) zoomX = imageWidth - zoomWidth; if (zoomY > imageHeight - zoomHeight) zoomY = imageHeight - zoomHeight; zoom.style.backgroundImage = 'url(' + image.src + ')'; zoom.style.backgroundPosition = '-' + (zoomX * 4) + 'px -' + (zoomY * 4) + 'px'; zoom.style.left = x + 'px'; zoom.style.top = y + 'px'; zoom.style.display = 'block'; }); container.addEventListener('mouseleave', function() { zoom.style.display = 'none'; }); </script> </body> </html> ``` 这段代码中,我们通过JavaScript来实现了放大镜效果。当鼠标在图片上移动时,我们会根据鼠标的位置来计算出放大镜的位置和背景图的位置,并将放大镜显示出来。当鼠标离开图片时,我们隐藏放大镜

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值