[原創] JQ仿淘寶圖片局部放大鏡效果

有的時候我們需要在頁面中展示一些高清大圖,但是如果直接放在頁面中又會顯得很佔地方,影響用戶體驗
或者在一些商城網站中,我們需要展示商品的高清大圖,所以就需要一個類似放大鏡的效果

具體效果請點擊這裏:圖片放大鏡效果

原理很簡單,首先加載一個略縮圖,提高頁面加載速度,然後在鼠標劃過略縮圖的時候創建一個div來控制背景的background-position的範圍展示局部大圖,具體代碼如下:

<!--
* 作者:羅舊的博客
* 網址:http://www.haoshuzx.com
* 時間:2016-08-29
* e-mail:[email protected]
-->

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>圖片放大插件</title>
    <script src="jquery-2.1.4.min.js"></script>
    <style>
        * {
            margin: 0;
            padding: 0;
        }

        .left {
            float: left;
        }

        .wrap {
            overflow: hidden;
            margin: 50px 0 0 50px;
            position: relative;
        }

        .wrap img {
            border: 1px solid #ccc;
        }

        .wrap span {
            position: absolute;
            left: 0;
            top: 0;
            width: 50px;
            height: 50px;
            background: rgba(255, 255, 255, 0.3);
            display: none;
        }

        .zoom {
            width: 500px;
            height: 500px;
            border: 1px dashed #ccc;
            background: url("001.jpg") no-repeat;
            background-position: center center;
            margin-top: 50px;
            display: none;
        }
    </style>
</head>
<body>
<div class="wrap left">
    <img src="001_thumb.jpg" alt="略縮圖"/>
    <span></span>
</div>
<div class="zoom left"></div>

<script>
    (function ($) {
        $.fn.zoom = function () {
            var img = $(this).find("img");
            var span = $(this).find("span");
            var zoom = $(".zoom");
            //獲取略縮圖相對於窗口的位置
 var tLeft = $(img).offset().left;
            var tTop = $(img).offset().top;

            $(this).mousemove(function (e) {
                //獲取鼠標座標
 var mLeft = e.clientX;
                var mTop = e.clientY;

                //計算鼠標相對於圖片區域的位置
 var l = mLeft - tLeft;
                var t = mTop - tTop;

                //鼠標移動時移動span
 $(span).css({
                    "display": "block",
                    "left": (l - 25) + "px",
                    "top": (t - 25) + "px"
 });

                //計算偏移量
 var ll = (l / $(img).width()) * 100 + "%";
                var tt = (t / $(img).height()) * 100 + "%";

                //設置大圖偏移
 $(zoom).css({
                    "display": "block",
                    "background-position": ll + " " + tt
 })
            });

            //解除綁定
 $(this).mouseout(function () {
                $(span).css("display", "none");
                $(zoom).css("display", "none");
            })
        }
    })(jQuery);

    $(".wrap").zoom();
</script>

</body>
</html>

以上只是簡單的實現了效果,在具體項目中,還需要根據實際情況設定大圖的加載時間,是頁面加載完成之後加載還是用戶鼠標劃過的時候才加載,可以根據實際需求判斷,還需要考慮的就是zoom區域的位置,需要採用絕對定位來避免打亂現有的文檔流樣式.

點擊這裏下載源碼:圖片放大鏡效果源碼
本文爲作者原創文章,轉載請註明來自 羅舊的博客,鏈接:http://www.haoshuzx.com/qianduan/43.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章