js實(shí)現(xiàn)購(gòu)物網(wǎng)站放大鏡功能
本文實(shí)例為大家分享了js實(shí)現(xiàn)購(gòu)物網(wǎng)站放大鏡功能的具體代碼,供大家參考,具體內(nèi)容如下
首先看效果圖:
先是布局,左邊一個(gè)小圖框,包含一個(gè)鼠標(biāo)移動(dòng)框,右邊一個(gè)放大框。
<div class="box"> <div class="small"> <img src="small3.jpg" alt=""> <div class="move"></div> </div> <div class="big"> <img src="big3.jpg" alt=""> </div> </div>
寫(xiě)一下css
.small{ position: relative; float: left; width: 450px; height: 450px; border:1px solid #000; } .small .move{ position: absolute; top:0; width: 300px; height: 300px; background-color: rgba(0,0,0,0.4); cursor:move; display: none; } .big{ position: relative; float: left; width: 540px; height: 540px; margin-left: 20px; overflow: hidden; border:1px solid #000; display: none; } .big img{ position: absolute; top:0; left: 0; }
js部分:
var box=document.getElementsByClassName('box')[0],small=box.getElementsByClassName('small')[0],move=small.getElementsByClassName('move')[0],smallImg=small.getElementsByTagName('img')[0],big=box.getElementsByClassName('big')[0],bigImg=big.getElementsByTagName('img')[0]; //首先把需要的元素都獲取出來(lái) small.onmouseover=function(){ move.style.display='block'; big.style.display="block"; }; small.onmouseout=function(){ move.style.display='none'; big.style.display="none"; }; small.onmousemove=function(e){ e=e||window.event;//兼容性考慮 var x=e.clientX-smallImg.getBoundingClientRect().left-move.offsetWidth/2; var y=e.clientY-smallImg.getBoundingClientRect().top-move.offsetHeight/2; if(x<0){ x=0; } if(x>smallImg.offsetWidth-move.offsetWidth){ x=smallImg.offsetWidth-move.offsetWidth; } if(y<0){ y=0; } if(y>smallImg.offsetHeight-move.offsetHeight){ y=smallImg.offsetHeight-move.offsetHeight; } move.style.left=x+"px"; move.style.top=y+"px"; //實(shí)現(xiàn)左邊move塊跟隨鼠標(biāo)移動(dòng)的代碼 var scale=bigImg.offsetWidth/smallImg.offsetWidth; //按照比例放大 bigImg.style.left='-'+x*scale+'px'; //因?yàn)閳D片是需要左移和上移的所以要加負(fù)號(hào) bigImg.style.top='-'+y*scale+'px'; }
放大鏡效果就實(shí)現(xiàn)啦!
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
JS.getTextContent(element,preformatted)使用介紹
JS.getTextContent獲取標(biāo)簽的文字想必大家并不陌生吧,下面為大家介紹下具體的使用方法,感興趣的朋友可以參考下2013-09-09javascript實(shí)現(xiàn)全局匹配并替換的方法
這篇文章主要介紹了javascript實(shí)現(xiàn)全局匹配并替換的方法的總結(jié),十分的簡(jiǎn)單實(shí)用,有需要的小伙伴可以參考下。2015-04-04js關(guān)閉模態(tài)窗口刷新父頁(yè)面或跳轉(zhuǎn)頁(yè)面
點(diǎn)擊按鈕時(shí),彈出B窗口(模態(tài))。在B窗口中添加數(shù)據(jù),提交后,要求B窗口自關(guān)閉,然后刷新A窗口(父),需要的朋友可以了解下2012-12-12ES6?Promise.all的使用方法以及其細(xì)節(jié)詳解
Promise對(duì)象用于表示一個(gè)異步操作的最終完成(或失敗)及其結(jié)果值,下面這篇文章主要給大家介紹了關(guān)于ES6?Promise.all的使用方法以及其細(xì)節(jié)的相關(guān)資料,需要的朋友可以參考下2022-07-07js中合并對(duì)象的幾種實(shí)現(xiàn)方法
"js 合并對(duì)象"是一種在JavaScript編程中常見(jiàn)的操作,用于將多個(gè)對(duì)象的屬性合并到一起,通常,我們會(huì)使用ES6的擴(kuò)展運(yùn)算符或者Object.assign()函數(shù)來(lái)實(shí)現(xiàn)這個(gè)功能,感興趣的可以了解一下2023-08-08bootstrap導(dǎo)航欄、下拉菜單、表單的簡(jiǎn)單應(yīng)用實(shí)例解析
這篇文章主要介紹了bootstrap導(dǎo)航欄、下拉菜單、表單的簡(jiǎn)單應(yīng)用實(shí)例解析,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧2017-01-01layui實(shí)現(xiàn)table加載的示例代碼
今天小編就為大家分享一篇layui實(shí)現(xiàn)table加載的示例代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-08-08JS中使用apply、bind實(shí)現(xiàn)為函數(shù)或者類(lèi)傳入動(dòng)態(tài)個(gè)數(shù)的參數(shù)
這篇文章主要介紹了JS中使用apply、bind實(shí)現(xiàn)為函數(shù)或者類(lèi)傳入動(dòng)態(tài)個(gè)數(shù)的參數(shù)的相關(guān)資料,需要的朋友可以參考下2016-04-04論壇轉(zhuǎn)貼工具中用到的正則表達(dá)式學(xué)習(xí)正則的好例子
論壇轉(zhuǎn)貼工具中用到的正則表達(dá)式學(xué)習(xí)正則的好例子...2007-11-11