jQuery實現圖片放大鏡效果


實現圖片放大鏡的原理:

  1. 給放大鏡元素一個對應的html元素為<div class='right'>
  2. 設置這個div的寬高固定為某個值(350px,350px)
  3. 設置div的css為超出部分隱藏
  4. div中嵌套子元素img設置寬高固定為某個值(2560px,1600px)
  5. 通過數學函數計算,移動div的x軸和y軸的滾動條,正好讓放大鏡顯示刺客鼠標在大圖的那一塊區域。

部分函數功能介紹:

attr()方法:獲取或更改對應的DOM元素的屬性值

  • 獲取:$("div").attr("屬性名稱")
  • 更改:$("div").attr("屬性名稱","屬性值")

mouseover():鼠標移入事件

mouseout():鼠標移出事件

scrollTop():獲取或設置匹配元素相對滾動條頂部的偏移

scrollLeft():獲取或設置匹配元素相對滾動條左側的偏移

源代碼:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>jQuery實現放大鏡效果</title>
        <script type="text/javascript" src="js/jquery-3.3.1.js" ></script>
        <style>
            #contain{
                width:80%;
                height:500px;
                margin:0 auto;
            }
            .left{
                float:left;
            }
            .right{
                float:left;
                width:350px;
                height:350px;
                overflow:hidden;/*超出部分隱藏*/
                padding:0px;
                display:none;/*默認先不顯示*/
            }
            .up{
                width:320px;
                height:200px;
                padding:30px;
            }
            .up img{
                width:320px;
                height:200px;
            }
            .down{
                padding:20px;
                padding-left:35px;
            }
            .down img{
                width:64px;
                height:40px;
                border:3px solid #ccc;
            }
        </style>
    </head>
    <body>
        <div id="contain">
            <div class="left">
                <div class="up">
                    <img src="img/06.jpg" bigimage>
                </div>
                <div class="down">
                    <img src="img/06.jpg" smallimage>
                    <img src="img/07.jpg" smallimage>
                    <img src="img/08.jpg" smallimage>
                    <img src="img/09.jpg" smallimage>
                </div>
            </div>
            <div class="right">
                <img src="" mirror>
            </div>
        </div>
    </body>
    <script>
        /**
         * 完成下面選擇圖片的效果:
         *         1.當鼠標放置在下面的小圖片時,改變邊框屬性
         *         2.更改含有bigimage的img標簽的src,進行圖片更換
         */
        $("[smallimage]").mouseover(function(){
            var address = $(this).css("border","3px solid red").attr("src");
            $("[bigimage]").attr("src",address);
        }).mouseout(function(){
            $(this).css("border","3px solid #ccc");
        });
        /**
         * 大圖鼠標移動事件:
         *         1.設置mirror所在的img標簽的display屬性為block,即讓它顯示
         *         2.當鼠標在內部移動的時候,通過計算,在mirror中進行放大顯示
         * 鼠標移出事件:
         *         設置mirror不可見 display:none
         */
        $("[bigimage]").mousemove(function(even){
            //獲取大圖的相對文檔的偏移量
            var offset = $(this).offset();
            //獲取鼠標相對於大圖左上角的x軸偏移量
            var x = even.pageX - offset.left;
            //獲取鼠標相對於大圖左上角的y軸偏移量
            var y = even.pageY - offset.top;
            //設置放大鏡放大倍數,可自行設置
            var multiple = 8;
            //獲取放大鏡所在div的寬度和高度
            var mirrorwidth = $(".right").width();
            var mirrorHeight = $(".right").height();
            //獲取bigimage此時的src的值
            var address = $(this).attr("src");
            //更改放大鏡的src的值,切換圖片
            $("[mirror]").attr("src",address);
            $(".right").css("display","block").scrollLeft(Math.max(x*multiple - mirrorwidth/2.0)).scrollTop(Math.max(y*multiple - mirrorHeight/2.0));
        }).mouseout(function(){
            $(".right").css("display","none");
        });
    </script>
</html>

效果圖:

1.鼠標經過下面的小圖片:

2.放大效果:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM