前端学习记录-运用html、css和JavaScript实现的放大镜效果

前端学习作业,基本上完成了预期放大镜的效果,包括边界判断,鼠标移动,图片缩放等,并且可以适应各种尺寸的图片
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Magnifier</title>
    <script type="text/javascript" src="lib/jQuery.js"></script>
    <style>
        *{
            margin: 0;
            padding: 0;
            list-style: none;
            font-size: 0px;
        }
        img{
            display: block;
        }
        .container{
            font-size: 0px;
        }
        .container .preview{
            position: relative;
            display: inline-block;
        }
        .container .preview .indicator{
            position: absolute;
            background-color: rgba(243, 240, 54, 0.281);
        }
        .container .preview img{
            zoom: 0.5;
        }
        .container .magnifier{
            background-color: gray;
            position: relative;
            overflow: hidden;
            display: inline-block;
        }
        #aim{
            position: absolute;
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="preview">
            <img id="image" src="./img/testImg2.jpg" alt="">
            <div class="indicator"></div>
        </div>
        <div class="magnifier">
            <img src="./img/testImg2.jpg" alt="" id="aim">
        </div>
    </div>
</body>

<script>
    $(function(){
        var imgWd, imgHt;
        var imgSrc = $("#image").attr("src");
        getImageWidth(imgSrc,function(w,h){
        console.log({width:w,height:h});
        imgWd = w;
        imgHt = h;
        });
        $(".indicator").css("width",imgWd/4+'px').css("height",imgHt/4+'px');
        $(".magnifier").css("width",imgWd/2+'px').css("height",imgHt/2+'px');
        $(".preview").mousemove(function(event){
            var positionX = event.pageX - $(this).offset().left;
            var positionY = event.pageY - $(this).offset().top;
            var centerX = positionX-(imgWd/4)/2<0?0:(positionX-(imgWd/4)/2>(imgWd/4)?(imgWd/4):positionX-(imgWd/4)/2);
            var centerY = positionY-(imgHt/4)/2<0?0:(positionY-(imgHt/4)/2>(imgHt/4)?(imgHt/4):positionY-(imgHt/4)/2);
            $(".indicator").css("left",centerX +'px').css("top",centerY +'px');
            $("#aim").css("left",-centerX*2+'px').css("top",-centerY*2+'px');
        })

        function getImageWidth(url,callback){
            var img = new Image();
            img.src = url;
            if(img.complete){
                callback(img.width, img.height);
            }else{
                img.onload = function(){
                    callback(img.width, img.height);
                }
            }
        }
    })
</script>

</html>
效果图

猜你喜欢

转载自www.cnblogs.com/li-xiangff/p/12820390.html