js圖片放大鏡實(shí)例講解(必看篇)
1、圖片放大鏡的思路:
當(dāng)打開頁(yè)面時(shí)只有圖片
首先,說(shuō)一下基本效果和調(diào)理,圖片放大鏡,也就是當(dāng)你鼠標(biāo)移入當(dāng)前的商品圖片時(shí),會(huì)出現(xiàn)一個(gè)小灰色的觀察移動(dòng)框,有點(diǎn)會(huì)出現(xiàn)一個(gè)對(duì)應(yīng)部位的放大的圖片。
然后當(dāng)鼠標(biāo)移動(dòng)時(shí),右邊的放大鏡會(huì)出現(xiàn)對(duì)應(yīng)部位的放大圖片
最后當(dāng)鼠標(biāo)移開后,小的觀察框和放大的圖片都會(huì)消失。
2、有了基本思路就看代碼
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <style type="text/css"> #small{ width: 300px; height: 300px; border: 1px solid firebrick; float: left; position: relative; } #small img{ width: 100%; height: 100%; } #mask{ width: 100px; height: 100px; background: rgba(0,0,0,0.3); position: absolute; top: 0; left: 0; display: none; } #big{ width: 300px; height: 300px; border: 1px solid hotpink; overflow: hidden; float: left; margin-left: 50px; position: relative; display: none; } #big img{ position: absolute; } </style> <script type="text/javascript"> window.onload = function(){ // 獲取到所有的元素,因?yàn)橛袑?duì)應(yīng)元素的移動(dòng),所以在設(shè)置樣式的,一定要給對(duì)應(yīng)的元素絕對(duì)定位,類似于拖拽 var oSmall = document.getElementById('small'), oMask = document.getElementById('mask'), oBig = document.getElementById('big'), oBigImg = document.getElementById('bigImg'); //給當(dāng)前小的div一個(gè)鼠標(biāo)移入事件 oSmall.onmouseover = function(){ // 當(dāng)鼠標(biāo)移入時(shí),對(duì)應(yīng)的區(qū)域顯示 小的觀察框,和 對(duì)應(yīng)的右面的放大圖片 oMask.style.display = 'block'; oBig.style.display = 'block'; }; oSmall.onmouseout = function(){ // 當(dāng)鼠標(biāo)移除時(shí)對(duì)應(yīng)的區(qū)域隱藏 oMask.style.display = 'none'; oBig.style.display = 'none' } oSmall.onmousemove = function(ev){ // 首先獲取到event事件 var oEvent = ev || event; // offsetWidth = 本身的樣式寬 + 左右padding + 左右border // clientX clientY 獲取鼠標(biāo)指針位置,相對(duì)于當(dāng)前窗口的 X 和 Y 坐標(biāo) // 鼠標(biāo)距離當(dāng)前窗口左邊的距離 了l ,就為當(dāng)前鼠標(biāo)距離窗口左邊的距離 減去 小的觀察框的寬度 // oMask.offsetWidth / 2 設(shè)置鼠標(biāo)處于正中心的位置 var l = oEvent.clientX - oMask.offsetWidth / 2; var t = oEvent.clientY - oMask.offsetHeight / 2; // 對(duì)觀察框距離的限制, 1.當(dāng)它距離左邊的距離比0 小的時(shí)候,設(shè)置它為0 就是它移動(dòng)到最左邊的時(shí)候 if (l < 0) { l = 0; }else if(l > oSmall.offsetWidth - oMask.offsetWidth){ // 當(dāng)它移動(dòng)到最右邊的時(shí)候,設(shè)置它的left值為 當(dāng)前的left值 l = oSmall.offsetWidth - oMask.offsetWidth; }; //同理對(duì)上下邊界進(jìn)行設(shè)置 if (t < 0) { t = 0; }else if(t > oSmall.offsetHeight - oMask.offsetHeight){ t = oSmall.offsetHeight - oMask.offsetHeight; }; // 設(shè)置小的觀察框的移動(dòng)時(shí)的當(dāng)前位置 oMask.style.left = l + 'px'; oMask.style.top = t + 'px'; // 設(shè)置對(duì)應(yīng)的右邊放大圖片對(duì)應(yīng)的位置 //var scale = l / (oSmall.offsetWidth - oMask.offsetWidth); // 大的可視區(qū)域的寬減去小的觀察框?qū)?yīng)的寬,就是可移動(dòng)的總距離, 當(dāng)前處的位置,處于總的距離的比例 與大圖片,在大圖片的可視框里所處的位置相同所以如下 oBigImg.style.left = l * (oBig.offsetWidth - oBigImg.offsetWidth)/(oSmall.offsetWidth-oMask.offsetWidth)+"px"; oBigImg.style.top = t * (oBig.offsetHeight - oBigImg.offsetHeight)/(oSmall.offsetHeight-oMask.offsetHeight)+"px"; } } </script> </head> <body> <div id="small"> <img src="img/s.jpg" /> <spanS id="mask"></span> </div> <div id="big"> <img src="img/b.jpg" id="bigImg"/> </div> </body> </html>
還有什么更好的方法互相交流
以上這篇js圖片放大鏡實(shí)例講解(必看篇)就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- js放大鏡放大圖片效果
- JavaScript圖片放大鏡效果代碼[代碼比較簡(jiǎn)單]
- JavaScript 圖片放大鏡(可拖放、縮放效果)
- JavaScript 圖片切割效果(放大鏡)
- 圖片放大鏡jquery.jqzoom.js使用實(shí)例附放大鏡圖標(biāo)
- JS實(shí)現(xiàn)圖片放大鏡效果的方法
- 利用javascript實(shí)現(xiàn)的三種圖片放大鏡效果實(shí)例(附源碼)
- 原生javascript實(shí)現(xiàn)圖片放大鏡效果
- JavaScript圖片放大技術(shù)(放大鏡)實(shí)現(xiàn)代碼分享
- JS實(shí)現(xiàn)圖片放大鏡插件詳解
- js canvas實(shí)現(xiàn)放大鏡查看圖片功能
- JavaScript實(shí)現(xiàn)多張圖片放大鏡效果示例【不限定圖片尺寸,rem單位】
相關(guān)文章
echarts浮動(dòng)顯示單位的實(shí)現(xiàn)方法示例
這篇文章主要給大家介紹了關(guān)于echarts浮動(dòng)顯示單位的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12JS為什么說(shuō)async/await是generator的語(yǔ)法糖詳解
這篇文章主要給大家介紹了關(guān)于JS為什么說(shuō)async/await是generator的語(yǔ)法糖的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用JS具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07Javascript客戶端將指定區(qū)域?qū)С龅絎ord、Excel的代碼
Javascript 瀏覽器客戶端導(dǎo)出指定區(qū)域到Word、Excel,非常不錯(cuò)的應(yīng)用實(shí)例2008-10-10鼠標(biāo)左鍵單擊沖突的問(wèn)題解決方法(防止冒泡)
一個(gè)頁(yè)面實(shí)現(xiàn)了兩種右鍵菜單,當(dāng)鼠標(biāo)左鍵單擊空白處時(shí),右鍵菜單并不隱藏,下面為大家解決鼠標(biāo)左鍵單擊沖突的問(wèn)題2014-05-05JavaScript?ECMAScript?6(ES2015~ES2022)所有新特性總結(jié)
這篇文章主要介紹了JavaScript?ECMAScript?6(ES2015~ES2022)所有新特性總結(jié),文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-07-07解決layer.open后laydate失效的問(wèn)題
今天小編就為大家分享一篇解決layer.open后laydate失效的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-09-09