js圖片放大鏡實例講解(必看篇)
1、圖片放大鏡的思路:
當(dāng)打開頁面時只有圖片
首先,說一下基本效果和調(diào)理,圖片放大鏡,也就是當(dāng)你鼠標(biāo)移入當(dāng)前的商品圖片時,會出現(xiàn)一個小灰色的觀察移動框,有點會出現(xiàn)一個對應(yīng)部位的放大的圖片。
然后當(dāng)鼠標(biāo)移動時,右邊的放大鏡會出現(xiàn)對應(yīng)部位的放大圖片
最后當(dāng)鼠標(biāo)移開后,小的觀察框和放大的圖片都會消失。
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īng)元素的移動,所以在設(shè)置樣式的,一定要給對應(yīng)的元素絕對定位,類似于拖拽 var oSmall = document.getElementById('small'), oMask = document.getElementById('mask'), oBig = document.getElementById('big'), oBigImg = document.getElementById('bigImg'); //給當(dāng)前小的div一個鼠標(biāo)移入事件 oSmall.onmouseover = function(){ // 當(dāng)鼠標(biāo)移入時,對應(yīng)的區(qū)域顯示 小的觀察框,和 對應(yīng)的右面的放大圖片 oMask.style.display = 'block'; oBig.style.display = 'block'; }; oSmall.onmouseout = function(){ // 當(dāng)鼠標(biāo)移除時對應(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)指針位置,相對于當(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; // 對觀察框距離的限制, 1.當(dāng)它距離左邊的距離比0 小的時候,設(shè)置它為0 就是它移動到最左邊的時候 if (l < 0) { l = 0; }else if(l > oSmall.offsetWidth - oMask.offsetWidth){ // 當(dāng)它移動到最右邊的時候,設(shè)置它的left值為 當(dāng)前的left值 l = oSmall.offsetWidth - oMask.offsetWidth; }; //同理對上下邊界進行設(shè)置 if (t < 0) { t = 0; }else if(t > oSmall.offsetHeight - oMask.offsetHeight){ t = oSmall.offsetHeight - oMask.offsetHeight; }; // 設(shè)置小的觀察框的移動時的當(dāng)前位置 oMask.style.left = l + 'px'; oMask.style.top = t + 'px'; // 設(shè)置對應(yīng)的右邊放大圖片對應(yīng)的位置 //var scale = l / (oSmall.offsetWidth - oMask.offsetWidth); // 大的可視區(qū)域的寬減去小的觀察框?qū)?yī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圖片放大鏡實例講解(必看篇)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
- js放大鏡放大圖片效果
- JavaScript圖片放大鏡效果代碼[代碼比較簡單]
- JavaScript 圖片放大鏡(可拖放、縮放效果)
- JavaScript 圖片切割效果(放大鏡)
- 圖片放大鏡jquery.jqzoom.js使用實例附放大鏡圖標(biāo)
- JS實現(xiàn)圖片放大鏡效果的方法
- 利用javascript實現(xiàn)的三種圖片放大鏡效果實例(附源碼)
- 原生javascript實現(xiàn)圖片放大鏡效果
- JavaScript圖片放大技術(shù)(放大鏡)實現(xiàn)代碼分享
- JS實現(xiàn)圖片放大鏡插件詳解
- js canvas實現(xiàn)放大鏡查看圖片功能
- JavaScript實現(xiàn)多張圖片放大鏡效果示例【不限定圖片尺寸,rem單位】
相關(guān)文章
JS為什么說async/await是generator的語法糖詳解
這篇文章主要給大家介紹了關(guān)于JS為什么說async/await是generator的語法糖的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用JS具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07Javascript客戶端將指定區(qū)域?qū)С龅絎ord、Excel的代碼
Javascript 瀏覽器客戶端導(dǎo)出指定區(qū)域到Word、Excel,非常不錯的應(yīng)用實例2008-10-10JavaScript?ECMAScript?6(ES2015~ES2022)所有新特性總結(jié)
這篇文章主要介紹了JavaScript?ECMAScript?6(ES2015~ES2022)所有新特性總結(jié),文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下2022-07-07