我們都知道放大鏡效果一般都是用于一些商城中的,列如每當(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: ''; 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 = $('.small-box .mask'); var smallimg = $('.small-box img'); var square = $('.square'); var bigbox = $('.big-box'); var bigimg = $('.big-box img'); var imgs = $all('.img-list img'); //鼠標(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 = ''; } this.className = 'active'; //改變對應(yīng)的圖片鏈接 smallimg.src = this.getAttribute('data-small'); bigimg.src = this.getAttribute('data-big'); }; } //鼠標(biāo)移入放大器顯示并設(shè)置選中框的大小 smallbox.onmouseover = function(){ square.style.display = 'block'; bigbox.style.display = 'block'; //位置w/smallimg.w = bigbox.w/bigimg.w square.style.width = bigbox.offsetWidth * smallimg.offsetWidth/bigimg.offsetWidth + 'px'; square.style.height = bigbox.offsetHeight * smallimg.offsetHeight/bigimg.offsetHeight + 'px'; }; //鼠標(biāo)移出放大器隱藏 smallbox.onmouseout = function(){ square.style.display = 'none'; bigbox.style.display = 'none'; }; //放大器移動 //獲取鼠標(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 + 'px'; square.style.top = y + 'px'; //給放大器定位 x/? = smallimg.w/bigimg.w bigimg.style.top = -y * bigimg.offsetWidth/smallimg.offsetWidth + 'px'; bigimg.style.left = -x * bigimg.offsetHeight/smallimg.offsetHeight + 'px'; }; //通過名稱查找某個元素 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)放大鏡效果的實例的詳細(xì)內(nèi)容。更多信息請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

熱AI工具

Undress AI Tool
免費脫衣服圖片

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

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

Clothoff.io
AI脫衣機(jī)

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

熱門文章

熱工具

記事本++7.3.1
好用且免費的代碼編輯器

SublimeText3漢化版
中文版,非常好用

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

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

SublimeText3 Mac版
神級代碼編輯軟件(SublimeText3)

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技

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

股票分析必備工具:學(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)引言:如今,天氣預(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)碼,需要具體代碼示例前言:在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

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

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ù)
