单击图片选择主图,鼠标悬浮在图片上,可以对图片进行区域放大。

效果图如下:

用js实现京东商品详情放大图用js实现京东商品详情放大图用js实现京东商品详情放大图

代码实现如下:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>放大图片</title>
        <style>
            body>div{
                margin: 0 auto;
                width: 600px;
            }
            .datu img{
                width: 100%;
                height: 100%;
                
            }
            .datu{
                width: 505px;
                height: 350px;
                position: relative;
                left:-100px;
            
            }
            #move{
                background-color:lightblue;
                opacity: 0.5;
                width: 150px;
                height: 150px;
                position: absolute;
                left:0px;
                top:0px;
                }
            #bimg{
                width: 400px;
                height: 400px;
                overflow: hidden;
                position: absolute;
                top:0px;
                left:510px;
                
            /*    display: none;*/

            }
            #bimg img{
                width: 1610px;
                height: 1000px;
                position: absolute;
                top:0px;
                left: 0px;
            }
            .xiaotu{
                width: 500px;
                height: 120px;
                position: relative;
                left:-100px;
                
            }
            .img1,.img2,.img3,.img4{
                width: 25%;
                float: left;
            }
            .img1 img,.img2 img,.img3 img,.img4 img{
                width: 130px;
                height: 100px;
                
                
            }
        </style>
    </head>
    <body>
        <div>
            <div class="datu">
                <img src="0726/12.jpg" class="d1">
                <div id="move"></div>
                <div id="bimg">
                    <img src="0726/12.jpg" id="bbimg">
                </div>
            </div>
            <div class="xiaotu">
            <div class="img1"><img src="0726/12.jpg" class="i1"></div>
            <div class="img2"><img src="0726/11.jpg" class="i2"></div>
            <div class="img3"><img src="0726/17.jpg" class="i3"></div>
            <div class="img4"><img src="0726/18.jpg" class="i4"></div>
    </div>
        </div>
        <script>
            
                var i1=document.getElementsByClassName("i1")[0];
                var i2=document.getElementsByClassName("i2")[0];
                var i3=document.getElementsByClassName("i3")[0];
                var i4=document.getElementsByClassName("i4")[0];
                var d1=document.getElementsByClassName("d1")[0];
                
                    var box=document.getElementsByClassName("datu")[0];
                    var move=document.getElementById("move");
                    var bimg=document.getElementById("bimg");
                    var bbimg=document.getElementById("bbimg");
                    box.onmouseover=function(){
                        bimg.style.display="block";
                        move.style.display="block";
                    }
                    box.onmouseout=function(){
                        bimg.style.display="none";
                        move.style.display="none";
                    }
                    box.onmousemove=function(event){
                        var x=event.clientX;
                        
                        var y=event.clientY;
                        
                        var t=box.offsetTop;
                        
                        var l=box.offsetLeft;
                        
                        var left1=x-l-move.offsetWidth/2;
                        var top1=y-t-move.offsetHeight/2;
                        if(top1<=0){
                            top1=0;//到最上边
                        }
                        else if(top1>=box.offsetHeight-move.offsetHeight){
                            top1=box.offsetHeight-move.offsetHeight;
                        }
                        if(left1<=0){
                            left1=0;
                        }
                        else if(left1>=box.offsetWidth-move.offsetWidth){
                            left1=box.offsetWidth-move.offsetWidth;
                        }
                        
                        move.style.top=top1+"px";
                        
                        move.style.left=left1+"px";
                        var w=left1/(box.offsetWidth-move.offsetWidth);
                        var h=top1/(box.offsetHeight-move.offsetHeight);
                        var bbimgtop=(bbimg.offsetHeight-bimg.offsetHeight)*h;
                        
                        var bbimgleft=(bbimg.offsetWidth-bimg.offsetWidth)*w;
                        bbimg.style.top=-bbimgtop+"px";
                        bbimg.style.left=-bbimgleft+"px";
                    }        
                i1.onclick=function(){
                    
                    d1.src=i1.src;
                    bbimg.src=i1.src;
                }
                
            i2.onclick=function(){
                
                    
                    d1.src=i2.src;
                    bbimg.src=i2.src;
                }
            i3.onclick=function(){
                
                    
                    d1.src=i3.src;
                    bbimg.src=i3.src;
            }
            i4.onclick=function(){
                
                    d1.src=i4.src;
                    bbimg.src=i4.src;
                }
    
        </script>
    </body>
</html>

相关文章: