jq做的图片放大器

效果预览

1.放大之前
这里写图片描述
2.放大之后
这里写图片描述

$(function () {
    var _default = {
        hoverClass: 'hover-img',
        zoomWidth: 155,
        zoomHeight: 155,
        mainImgWidth: 310, //主图宽度
        mainImgHeight: 310,
        offsetTop: 0,
        offsetLeft: 0
    };

    var $zoomPup = $('.zoom-pup');
    var $viewImg = $('.view-img'),
        $iparent = $viewImg.parent();

    $(document).on('mouseover', '.spec-items  li', function (e) {
        $(this)
            .addClass(_default.hoverClass)
            .siblings('li')
            .removeClass(_default.hoverClass);
        $('.spec-img').attr('src', $(this).find('img').attr('src'));
    });

    $('.main-img')
        .mouseenter(function (e) {
            $zoomPup.show();
            // 计算边距
            var offset = $(this).offset();
            _default.offsetTop = offset.top;
            _default.offsetLeft = offset.left;
            // 大图展示
            $viewImg.attr('src', $(this).find('img').attr('src'));
            $iparent.addClass('active');
        })
        .mousemove(function (e) {
            var px = e.pageX,
                py = e.pageY; //x坐标
            var zx = px - _default.zoomWidth / 2 - _default.offsetLeft,
                zy = py - _default.zoomHeight / 2 - _default.offsetTop;

            var vx = 0,
                vy = 0;

            zx < 0 && (zx = 0, vx = 0);
            zy < 0 && (zy = 0, vy = 0);


            var left = _default.mainImgWidth - _default.zoomWidth,
                top = _default.mainImgHeight - _default.zoomHeight;

            // 计算边缘
            // zx > left ? (zx = left, vx = -1 * _default.zoomWidth / 2) : zx;
            // zy > left ? (zy = top, vy = -1 * _default.zoomHeight / 2) : zy;
            zx > left ? (zx = left) : zx;
            zy > left ? (zy = top) : zy;

            // 大图间距
            // 400 / 155 = 2.581
            vx = vx + zx * (-2.581);
            vy = vy + zy * (-2.581);

            // 设置dom
            $zoomPup.css({
                'left': zx + 'px',
                'top': zy + 'px',
                'width': _default.zoomWidth,
                'height': _default.zoomHeight
            });
            $viewImg.css({
                'left': vx + 'px',
                'top': vy + 'px'
            });
        })
        .mouseleave(function (e) {
            $iparent.removeClass('active');
            $zoomPup.hide();
        });
})

代码段:https://gitee.com/loveliyq/codes/xrm0j3g7i1du2qpe5yhc617

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值