js仿淘寶商品放大預(yù)覽功能
將鼠標(biāo)移動(dòng)至圖片區(qū)域可放大預(yù)覽
效果圖:
代碼如下:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> *{padding:0; margin:0;} #img1{width:300px; height:200px;} #sp1{width:60px; height:40px; position: absolute; left:0; top:0; background: rgba(62, 55, 58, 0.4) } #img2{width:2250px; height:1500px; position: absolute;} div{width:450px; height:300px; position: absolute; left:310px; top:0; overflow: hidden; border:2px solid black; display: none;} </style> <script> window.onload=function(){ var img1 = document.getElementById('img1'); var img2 = document.getElementById('img2'); var sp = document.getElementById('sp1'); var oBox = document.getElementById('box'); sp.onmouseover=function(){ oBox.style.display='block'; }; sp.onmouseout=function(){ oBox.style.display='none'; }; document.onmousemove=function(ev){ var x = (ev.clientX || event.clientX)-sp.offsetWidth/2; var y = (ev.clientY || event.clientY)-sp.offsetHeight/2; if((ev.clientX || event.clientX)<sp.offsetWidth/2){ x = 0; } if((ev.clientX || event.clientX)>img1.offsetWidth-sp.offsetWidth/2){ x = img1.offsetWidth-sp.offsetWidth; } if((ev.clientY || event.clientY)<sp.offsetHeight/2){ y = 0; }if((ev.clientY || event.clientY)>img1.offsetHeight-sp.offsetHeight/2){ y = img1.offsetHeight-sp.offsetHeight; } if((ev.clientX || event.clientX)<300 && (ev.clientY || event.clientY)<200) { sp.style.left = x + 'px'; sp.style.top = y + 'px'; img2.style.left = -x * (img2.offsetWidth / img1.offsetWidth) + 'px'; img2.style.top = -y * (img2.offsetHeight / img1.offsetHeight) + 'px'; } } } </script> </head> <body> <img src="https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1489083204637&di=244fe324db033fc826de48e90d2373f0&imgtype=0&src=http%3A%2F%2Fpic2015.5442.com%2F2016%2F0328%2F025%2F5.jpg%2521960.jpg " alt="" id="img1"> <span id="sp1"></span> <div id="box"> <img src="https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1489083204637&di=244fe324db033fc826de48e90d2373f0&imgtype=0&src=http%3A%2F%2Fpic2015.5442.com%2F2016%2F0328%2F025%2F5.jpg%2521960.jpg " alt="" id="img2"> </div> </body> </html>
以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時(shí)也希望多多支持腳本之家!
相關(guān)文章
JavaScript+html實(shí)現(xiàn)前端頁面滑動(dòng)驗(yàn)證
這篇文章主要為大家詳細(xì)介紹了JavaScript+html實(shí)現(xiàn)前端頁面滑動(dòng)驗(yàn)證,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-06-06基于JS實(shí)現(xiàn)帶動(dòng)畫效果的流程進(jìn)度條
當(dāng)在使用流程的時(shí)候,比如有一個(gè)審核流程,有三個(gè)階段:開始,審核中,審核成功。當(dāng)在不同的階段,做相應(yīng)的進(jìn)度顯示,當(dāng)顯示時(shí),是以動(dòng)畫的形式顯示的。下面通過代碼給大家介紹JS實(shí)現(xiàn)帶動(dòng)畫效果的流程進(jìn)度條,感興趣的朋友一起看看吧2018-06-06JS?解決Cannot?set?properties?of?undefined的問題
遇到這樣問題當(dāng)前的是當(dāng)前對象或者數(shù)組是undefined,但是卻用來引用屬性或者索引,遇到這樣的問題如何解決呢,下面通過本文給大家介紹JS?如何解決Cannot?set?properties?of?undefined,需要的朋友可以參考下2024-01-01JS實(shí)現(xiàn)自適應(yīng)高度表單文本框的方法
這篇文章主要介紹了JS實(shí)現(xiàn)自適應(yīng)高度表單文本框的方法,實(shí)例分析了針對IE內(nèi)核與非IE內(nèi)核下的javascript控制文本框樣式的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-02-02zepto.js 實(shí)時(shí)監(jiān)聽輸入框的方法
今天小編就為大家分享一篇zepto.js 實(shí)時(shí)監(jiān)聽輸入框的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-12-12微信小程序 SOTER 生物認(rèn)證DEMO 指紋識(shí)別功能
這篇文章主要介紹了微信小程序 SOTER 生物認(rèn)證DEMO指紋識(shí)別功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-12-12