jq仿淘宝放大镜插件

html部分

//小图
<div id="photoBox">
    <img src="图片路径" width="400" height="400">
    <div id="dow"></div>
</div>
//大图
<div id="bigPhotoBox"></div>

css部分

 

#photoBox {    
    border: 1px solid #ccc;
    //小图位置,这里改
    position: absolute;  

}

#photoBox img {
    display: block;
}
            
#dow {
    width: 100px;
    height: 100px;
    background-color: rgba(0, 0, 0, 0.6);
    position: absolute;
    display: none;
}
            
#bigPhotoBox {
    display: none;
    border: 1px solid #ccc;
    background-repeat: no-repeat;
    background-color: #fff;
    width: 400px;
    height: 400px;
  //大图位置,这里改
  position: absolute;
  top: 0; 
  left: 400px;

}

 

js部分

//小图id
$("#photoBox").Magnifier({
        //大图id
    renderTo: "#bigPhotoBox",
});

jq插件部分

(function($) {
    $.fn.Magnifier = function(setting) {
        if(setting && setting.renderTo) {
            if(typeof(setting.renderTo) == "string") {
                setting.renderTo = $(setting.renderTo);
            }
        } else {
            return;
        }

        var x, y, set;
        this.on("mousemove", function(event) {
            x = event.pageX - 50;
            y = event.pageY - 50;
            //阴影框实际移动范围
            if(x > 0 && x < 300 && y > 0 && y < 300) {
                set = x / 3 + "% " + y / 3 + "%";
                setting.renderTo.css({
                    backgroundPosition: set
                });
                $("#dow").css({
                    top: y,
                    left: x,
                })
            }
            if(y <= 300 && y >= 0) {
                if(x < 0) {
                    set = 0 + "% " + y / 3 + "%";
                    setting.renderTo.css({
                        backgroundPosition: set
                    });
                    $("#dow").css({
                        top: y,
                        left: 0,
                    })
                }
                if(x > 300) {
                    set = 100 + "% " + y / 3 + "%";
                    setting.renderTo.css({
                        backgroundPosition: set
                    });
                    $("#dow").css({
                        top: y,
                        left: 300,
                    })
                }
            }
            if(x <= 300 && x >= 0) {
                if(y < 0) {
                    set = x / 3 + "% " + 0 + "%";
                    setting.renderTo.css({
                        backgroundPosition: set
                    });
                    $("#dow").css({
                        top: 0,
                        left: x,
                    })
                }
                if(y > 300) {
                    set = x / 3 + "% " + 100 + "%";
                    setting.renderTo.css({
                        backgroundPosition: set
                    });
                    $("#dow").css({
                        top: 300,
                        left: x,
                    })
                }
            }
        });
        //鼠标移入移出效果
        this.hover(function() {
            setting.renderTo.css({
                display: "block",
                backgroundImage: "url(" + $("#photoBox img").attr("src") + ")"
            });
            $("#dow").css({
                display: "block"
            })
        }, function() {
            setting.renderTo.css({
                display: "none"
            });
            $("#dow").css({
                display: "none"
            })
        });
    }
})(jQuery);

一时兴起写了这个插件,用的时候倒是简单,只需引入JQ插件再加上写少量JS代码代码就行了,大小图片的位置可以在CSS里改,唯一麻烦的是,图片宽高的更改问题,图片的宽高是400px的固定值,如果图片不是正方形,图片会失真;且CSS里面是这么写的,JQ里也是,由于这个数值涉及到阴影框的移动范围,改起来比较麻烦。所以就先这样吧,等以后有时间再优化优化。

转载于:https://www.cnblogs.com/n-b-s-p/p/6138971.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的用 HTML 和 jQuery 实现产品放大镜的示例代码: HTML 代码: ```html <div class="product-image-container"> <img src="product-image.jpg" alt="Product Image" class="product-image"> <div class="zoom-container"> <img src="product-image.jpg" alt="Product Image" class="zoom-image"> </div> </div> ``` CSS 代码: ```css .product-image-container { position: relative; } .zoom-container { position: absolute; top: 0; left: 100%; width: 200px; height: 200px; overflow: hidden; } .zoom-image { position: absolute; top: 0; left: 0; width: 400px; height: 400px; } ``` jQuery 代码: ```javascript $(document).ready(function() { var zoomContainer = $('.zoom-container'); var zoomImage = $('.zoom-image'); var productImage = $('.product-image'); zoomContainer.hide(); productImage.mouseenter(function() { zoomContainer.show(); }); productImage.mousemove(function(e) { var productImageOffset = productImage.offset(); var x = e.pageX - productImageOffset.left; var y = e.pageY - productImageOffset.top; var zoomImageWidth = zoomImage.width(); var zoomImageHeight = zoomImage.height(); var zoomContainerWidth = zoomContainer.width(); var zoomContainerHeight = zoomContainer.height(); var newX = (x / productImage.width()) * zoomImageWidth - zoomContainerWidth / 2; var newY = (y / productImage.height()) * zoomImageHeight - zoomContainerHeight / 2; if (newX < 0) { newX = 0; } if (newX + zoomContainerWidth > zoomImageWidth) { newX = zoomImageWidth - zoomContainerWidth; } if (newY < 0) { newY = 0; } if (newY + zoomContainerHeight > zoomImageHeight) { newY = zoomImageHeight - zoomContainerHeight; } zoomImage.css({ left: -newX, top: -newY }); }); productImage.mouseleave(function() { zoomContainer.hide(); }); }); ``` 代码解释: - 首先,HTML 代码包含了一个 `.product-image-container` 的 div 容器,包含了产品图片和放大镜容器两个 img 元素。 - CSS 代码中,使用了绝对定位来实现放大镜容器的浮动效果,同时隐藏了放大镜容器。 - jQuery 代码中,通过监听产品图片的 mouseenter、mousemove 和 mouseleave 事件来显示、移动和隐藏放大镜容器,并根据鼠标位置来计算放大镜中的图像显示位置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值