放大镜效果

效果:
图片描述

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)'
                    });
                }
            });
        });
    }
}

调用:

magnifyGlass('大图url');

原图:
图片描述

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值