\r\n    \r\n    
\r\n        
\r\n            \r\n            
<\/div>\r\n            
<\/div>\r\n        <\/div>\r\n        
\r\n            
    \r\n                
  • <\/li>\r\n                
  • <\/li>\r\n                
  • <\/li>\r\n                
  • <\/li>\r\n                
  • <\/li>\r\n            <\/ul>\r\n        <\/div>\r\n        
    \r\n            \r\n        <\/div>\r\n    <\/div>\r\n\r\n    

    国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

    首頁 web前端 js教程 JavaScript仿淘寶實現(xiàn)放大鏡效果的實例

    JavaScript仿淘寶實現(xiàn)放大鏡效果的實例

    Nov 24, 2017 am 09:41 AM
    javascript js 放大鏡

    我們都知道放大鏡效果一般都是用于一些商城中的,列如每當(dāng)我們打開淘寶,天貓等pc端時,看到心儀的物品時,點擊圖片時,便呈現(xiàn)出放大鏡的效果。在沒有去理解分析它的原理時,感覺非常的神奇,當(dāng)真正地去接觸,也是非常好理解、在之前的文章我們也為大家介紹了JavaScript實現(xiàn)放大鏡的實例,今天我們帶大家介紹下JavaScript仿淘寶實現(xiàn)放大鏡效果的實例!

    我們將整個布局分三個部分,第一部分為主題的小圖片,將他放在整個布局的左上角;第二部分是下邊的圖片列表,直接跟在小圖片的下邊;最后一部分是放大鏡顯示部分,將其定位到小圖片的右邊。
    ?然后就是利用js添加基本事件(包括鼠標(biāo)的移入移出等)詳細(xì)的內(nèi)用見如下代碼

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style>
            ul{
                list-style: none;
                padding: 0;
            }
            .zoom-box{
                width: 452px;
                position: relative;
            }
            .small-box{
                position: relative;
                border: 1px solid #ccc;
            }
            .small-box img{
                width: 100%;
                height: 100%;
            }
            .small-box .square{
                position: absolute;
                left: 0;
                top: 0;
                background: yellow;
                opacity: 0.5;
                /*display: none;*/
            }
            .small-box .mask{
                width: 100%;
                height: 100%;
                position: absolute;
                top: 0;
                left: 0;
            }
            .img-list ul::after{
                clear: both;
                content: &#39;&#39;;
                display: table;
            }
            .img-list ul li{
                float: left;
                margin: 0 10px;
                padding: 6px;
            }
            .img-list img{
                border: 2px solid transparent;
            }
            .img-list img.active{
                border: 2px solid red;
            }
            .big-box{
                position: absolute;
                top: 0;
                left: 100%;
                margin-left: 2px;
                border: 1px solid #cccccc;
                width: 500px;
                height: 500px;
                overflow: hidden;
                display: none;
            }
            .big-box img{
                position: absolute;
                top: 0;
                left: 0;
            }
    
        </style>
    </head>
    <body>
        <!-- 布局-->
        <div><!-- 容器-->
            <div><!-- 小圖片容器-->
                <img src="../img/magnifier/m1.jpg" alt=""/>
                <div></div><!-- 鼠標(biāo)選中框-->
                <div></div><!-- 鼠標(biāo)懸浮位置-->
            </div>
            <div><!-- 圖片列表-->
                <ul>
                    <li><img src="../img/magnifier/s1.jpg" alt="" data-small="../img/magnifier/m1.jpg"
                             data-big="../img/magnifier/b1.jpg"/></li>
                    <li><img src="../img/magnifier/s2.jpg" alt="" data-small="../img/magnifier/m2.jpg"
                             data-big="../img/magnifier/b2.jpg"/></li>
                    <li><img src="../img/magnifier/s3.jpg" alt="" data-small="../img/magnifier/m3.jpg"
                             data-big="../img/magnifier/b3.jpg"/></li>
                    <li><img src="../img/magnifier/s4.jpg" alt="" data-small="../img/magnifier/m4.jpg"
                             data-big="../img/magnifier/b4.jpg"/></li>
                    <li><img src="../img/magnifier/s5.jpg" alt="" data-small="../img/magnifier/m5.jpg"
                             data-big="../img/magnifier/b5.jpg"/></li>
                </ul>
            </div>
            <div><!-- 放大鏡-->
                <img src="../img/magnifier/b1.jpg" alt=""/>
            </div>
        </div>
    
        <script>
            //獲取要操作的元素
            var smallbox = $(&#39;.small-box .mask&#39;);
            var smallimg = $(&#39;.small-box img&#39;);
            var square = $(&#39;.square&#39;);
            var bigbox = $(&#39;.big-box&#39;);
            var bigimg = $(&#39;.big-box img&#39;);
            var imgs = $all(&#39;.img-list img&#39;);
    
            //鼠標(biāo)經(jīng)過圖片列表顯示被選中,實現(xiàn)圖片切換
            for(var i = 0; i < imgs.length; i++){
                imgs[i].onmouseover = function(){
                    for(var j = 0; j < imgs.length; j++){
                        imgs[j].className = &#39;&#39;;
                    }
                    this.className = &#39;active&#39;;
    
                    //改變對應(yīng)的圖片鏈接
                    smallimg.src = this.getAttribute(&#39;data-small&#39;);
                    bigimg.src = this.getAttribute(&#39;data-big&#39;);
                };
            }
    
            //鼠標(biāo)移入放大器顯示并設(shè)置選中框的大小
            smallbox.onmouseover = function(){
                square.style.display = &#39;block&#39;;
                bigbox.style.display = &#39;block&#39;;
                //位置w/smallimg.w = bigbox.w/bigimg.w
                square.style.width = bigbox.offsetWidth * smallimg.offsetWidth/bigimg.offsetWidth + &#39;px&#39;;
                square.style.height = bigbox.offsetHeight * smallimg.offsetHeight/bigimg.offsetHeight + &#39;px&#39;;
            };
            //鼠標(biāo)移出放大器隱藏
            smallbox.onmouseout = function(){
                square.style.display = &#39;none&#39;;
                bigbox.style.display = &#39;none&#39;;
            };
    
            //放大器移動
            //獲取鼠標(biāo)的位置
            smallbox.onmousemove = function(ev){
                var oEvent = ev || event;
                var x = oEvent.offsetX - square.offsetWidth/2;
                var y = oEvent.offsetY - square.offsetHeight/2;
    
                if(x < 0){
                    x = 0;
                }
                if(x > smallbox.offsetWidth - square.offsetWidth){
                    x = smallbox.offsetWidth - square.offsetWidth;
                }
                if(y < 0){
                    y = 0;
                }
                if(y > smallbox.offsetHeight - square.offsetHeight){
                    y = smallbox.offsetHeight - square.offsetHeight;
                }
    
                //給選中框定位
                square.style.left = x + &#39;px&#39;;
                square.style.top = y + &#39;px&#39;;
    
                //給放大器定位  x/? = smallimg.w/bigimg.w
                bigimg.style.top = -y * bigimg.offsetWidth/smallimg.offsetWidth + &#39;px&#39;;
                bigimg.style.left = -x * bigimg.offsetHeight/smallimg.offsetHeight + &#39;px&#39;;
    
            };
    
            //通過名稱查找某個元素
            function $(name){
                return document.querySelector(name);
            }
            //通過名稱查找相同的一組數(shù)據(jù)
            function $all(name){
                return document.querySelectorAll(name);
            }
        </script>
    </body>
    </html>

    總結(jié):

    到這里這個放大鏡效果就完成了,相信小伙伴們對此也是有了自己的理解與認(rèn)識,希望對你的工作有所幫助!

    相關(guān)推薦:

    JavaScript實現(xiàn)放大鏡的效果的實例


    用css實現(xiàn)圖片放大鏡效果實例詳解(圖)


    原生JS實現(xiàn)簡單放大鏡效果

    以上是JavaScript仿淘寶實現(xiàn)放大鏡效果的實例的詳細(xì)內(nèi)容。更多信息請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

    本站聲明
    本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請聯(lián)系admin@php.cn

    熱AI工具

    Undress AI Tool

    Undress AI Tool

    免費脫衣服圖片

    Undresser.AI Undress

    Undresser.AI Undress

    人工智能驅(qū)動的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

    AI Clothes Remover

    AI Clothes Remover

    用于從照片中去除衣服的在線人工智能工具。

    Clothoff.io

    Clothoff.io

    AI脫衣機(jī)

    Video Face Swap

    Video Face Swap

    使用我們完全免費的人工智能換臉工具輕松在任何視頻中換臉!

    熱工具

    記事本++7.3.1

    記事本++7.3.1

    好用且免費的代碼編輯器

    SublimeText3漢化版

    SublimeText3漢化版

    中文版,非常好用

    禪工作室 13.0.1

    禪工作室 13.0.1

    功能強(qiáng)大的PHP集成開發(fā)環(huán)境

    Dreamweaver CS6

    Dreamweaver CS6

    視覺化網(wǎng)頁開發(fā)工具

    SublimeText3 Mac版

    SublimeText3 Mac版

    神級代碼編輯軟件(SublimeText3)

    熱門話題

    Laravel 教程
    1601
    29
    PHP教程
    1502
    276
    WebSocket與JavaScript:實現(xiàn)實時監(jiān)控系統(tǒng)的關(guān)鍵技術(shù) WebSocket與JavaScript:實現(xiàn)實時監(jiān)控系統(tǒng)的關(guān)鍵技術(shù) Dec 17, 2023 pm 05:30 PM

    WebSocket與JavaScript:實現(xiàn)實時監(jiān)控系統(tǒng)的關(guān)鍵技術(shù)引言:隨著互聯(lián)網(wǎng)技術(shù)的快速發(fā)展,實時監(jiān)控系統(tǒng)在各個領(lǐng)域中得到了廣泛的應(yīng)用。而實現(xiàn)實時監(jiān)控的關(guān)鍵技術(shù)之一就是WebSocket與JavaScript的結(jié)合使用。本文將介紹WebSocket與JavaScript在實時監(jiān)控系統(tǒng)中的應(yīng)用,并給出代碼示例,詳細(xì)解釋其實現(xiàn)原理。一、WebSocket技

    推薦:優(yōu)秀JS開源人臉檢測識別項目 推薦:優(yōu)秀JS開源人臉檢測識別項目 Apr 03, 2024 am 11:55 AM

    人臉檢測識別技術(shù)已經(jīng)是一個比較成熟且應(yīng)用廣泛的技術(shù)。而目前最為廣泛的互聯(lián)網(wǎng)應(yīng)用語言非JS莫屬,在Web前端實現(xiàn)人臉檢測識別相比后端的人臉識別有優(yōu)勢也有弱勢。優(yōu)勢包括減少網(wǎng)絡(luò)交互、實時識別,大大縮短了用戶等待時間,提高了用戶體驗;弱勢是:受到模型大小限制,其中準(zhǔn)確率也有限。如何在web端使用js實現(xiàn)人臉檢測呢?為了實現(xiàn)Web端人臉識別,需要熟悉相關(guān)的編程語言和技術(shù),如JavaScript、HTML、CSS、WebRTC等。同時還需要掌握相關(guān)的計算機(jī)視覺和人工智能技術(shù)。值得注意的是,由于Web端的計

    如何使用WebSocket和JavaScript實現(xiàn)在線語音識別系統(tǒng) 如何使用WebSocket和JavaScript實現(xiàn)在線語音識別系統(tǒng) Dec 17, 2023 pm 02:54 PM

    如何使用WebSocket和JavaScript實現(xiàn)在線語音識別系統(tǒng)引言:隨著科技的不斷發(fā)展,語音識別技術(shù)已經(jīng)成為了人工智能領(lǐng)域的重要組成部分。而基于WebSocket和JavaScript實現(xiàn)的在線語音識別系統(tǒng),具備了低延遲、實時性和跨平臺的特點,成為了一種被廣泛應(yīng)用的解決方案。本文將介紹如何使用WebSocket和JavaScript來實現(xiàn)在線語音識別系

    股票分析必備工具:學(xué)習(xí)PHP和JS繪制蠟燭圖的步驟 股票分析必備工具:學(xué)習(xí)PHP和JS繪制蠟燭圖的步驟 Dec 17, 2023 pm 06:55 PM

    股票分析必備工具:學(xué)習(xí)PHP和JS繪制蠟燭圖的步驟,需要具體代碼示例隨著互聯(lián)網(wǎng)和科技的快速發(fā)展,股票交易已經(jīng)成為許多投資者的重要途徑之一。而股票分析是投資者決策的重要一環(huán),其中蠟燭圖被廣泛應(yīng)用于技術(shù)分析中。學(xué)習(xí)如何使用PHP和JS繪制蠟燭圖將為投資者提供更多直觀的信息,幫助他們更好地做出決策。蠟燭圖是一種以蠟燭形狀來展示股票價格的技術(shù)圖表。它展示了股票價格的

    JavaScript和WebSocket:打造高效的實時天氣預(yù)報系統(tǒng) JavaScript和WebSocket:打造高效的實時天氣預(yù)報系統(tǒng) Dec 17, 2023 pm 05:13 PM

    JavaScript和WebSocket:打造高效的實時天氣預(yù)報系統(tǒng)引言:如今,天氣預(yù)報的準(zhǔn)確性對于日常生活以及決策制定具有重要意義。隨著技術(shù)的發(fā)展,我們可以通過實時獲取天氣數(shù)據(jù)來提供更準(zhǔn)確可靠的天氣預(yù)報。在本文中,我們將學(xué)習(xí)如何使用JavaScript和WebSocket技術(shù),來構(gòu)建一個高效的實時天氣預(yù)報系統(tǒng)。本文將通過具體的代碼示例來展示實現(xiàn)的過程。We

    簡易JavaScript教程:獲取HTTP狀態(tài)碼的方法 簡易JavaScript教程:獲取HTTP狀態(tài)碼的方法 Jan 05, 2024 pm 06:08 PM

    JavaScript教程:如何獲取HTTP狀態(tài)碼,需要具體代碼示例前言:在Web開發(fā)中,經(jīng)常會涉及到與服務(wù)器進(jìn)行數(shù)據(jù)交互的場景。在與服務(wù)器進(jìn)行通信時,我們經(jīng)常需要獲取返回的HTTP狀態(tài)碼來判斷操作是否成功,根據(jù)不同的狀態(tài)碼來進(jìn)行相應(yīng)的處理。本篇文章將教你如何使用JavaScript獲取HTTP狀態(tài)碼,并提供一些實用的代碼示例。使用XMLHttpRequest

    PHP與JS開發(fā)技巧:掌握繪制股票蠟燭圖的方法 PHP與JS開發(fā)技巧:掌握繪制股票蠟燭圖的方法 Dec 18, 2023 pm 03:39 PM

    隨著互聯(lián)網(wǎng)金融的迅速發(fā)展,股票投資已經(jīng)成為了越來越多人的選擇。而在股票交易中,蠟燭圖是一種常用的技術(shù)分析方法,它能夠顯示股票價格的變化趨勢,幫助投資者做出更加精準(zhǔn)的決策。本文將通過介紹PHP和JS的開發(fā)技巧,帶領(lǐng)讀者了解如何繪制股票蠟燭圖,并提供具體的代碼示例。一、了解股票蠟燭圖在介紹如何繪制股票蠟燭圖之前,我們首先需要了解一下什么是蠟燭圖。蠟燭圖是由日本人

    如何在JavaScript中獲取HTTP狀態(tài)碼的簡單方法 如何在JavaScript中獲取HTTP狀態(tài)碼的簡單方法 Jan 05, 2024 pm 01:37 PM

    JavaScript中的HTTP狀態(tài)碼獲取方法簡介:在進(jìn)行前端開發(fā)中,我們常常需要處理與后端接口的交互,而HTTP狀態(tài)碼就是其中非常重要的一部分。了解和獲取HTTP狀態(tài)碼有助于我們更好地處理接口返回的數(shù)據(jù)。本文將介紹使用JavaScript獲取HTTP狀態(tài)碼的方法,并提供具體代碼示例。一、什么是HTTP狀態(tài)碼HTTP狀態(tài)碼是指當(dāng)瀏覽器向服務(wù)器發(fā)起請求時,服務(wù)

    See all articles