摘要:使用鼠標(biāo)的坐標(biāo)值減去遮罩層的一半的寬度,從而得到遮罩層顯示的位置。最后添加鼠標(biāo)離開的監(jiān)聽事件,當(dāng)鼠標(biāo)離開商品大圖時隱藏遮罩層以及放大鏡。
在詳情頁瀏覽時商品大圖還是不能完全看清楚商品的細(xì)節(jié),該特效實(shí)現(xiàn)鼠標(biāo)懸停在商品大圖上時,在商品大圖右側(cè)出現(xiàn)放大鏡效果并根據(jù)鼠標(biāo)的位置來改變右側(cè)大圖的顯示內(nèi)容,放大鏡中的內(nèi)容和鼠標(biāo)懸停位置的內(nèi)容相同。該特效的實(shí)現(xiàn)效果圖為:
對商品大圖添加鼠標(biāo)監(jiān)聽事件,首先監(jiān)聽鼠標(biāo)的進(jìn)入事件,在監(jiān)聽事件中將鼠標(biāo)在大圖上遮罩層以及放大圖片的顯示區(qū)域設(shè)置為可見。監(jiān)聽鼠標(biāo)的移動事件,首先獲取相關(guān)坐標(biāo),獲取大圖在頁面中的相對位置,再獲取鼠標(biāo)相對于頁面的位置,使用后者坐標(biāo)減去前者坐標(biāo)得到鼠標(biāo)相對于大圖的位置。使用鼠標(biāo)的坐標(biāo)值減去遮罩層的一半的寬度,從而得到遮罩層顯示的位置。使用遮罩層的坐標(biāo)值乘以放大倍數(shù)得到放大鏡里圖片的坐標(biāo)值,這里放大值設(shè)置為2。根據(jù)這些得到的坐標(biāo)值設(shè)置遮罩層的坐標(biāo),以及放大鏡區(qū)域中圖片坐標(biāo)。最后添加鼠標(biāo)離開的監(jiān)聽事件,當(dāng)鼠標(biāo)離開商品大圖時隱藏遮罩層以及放大鏡。
具體實(shí)現(xiàn)代碼:
//magnify //放大鏡效果,首先要獲取商品大圖div的jQuery對象 var $imgWrap=$(".detail-img-main") //監(jiān)聽鼠標(biāo)進(jìn)入事件 $imgWrap.mouseenter(function (e) { //#imgLoc為遮罩層,使其顯示 $("#imgLoc").css("display","block") //.mainfyImg即放大鏡顯示元素,也使其顯示 $(".manifyImg").css("display","block") }) //監(jiān)聽鼠標(biāo)離開事件 $imgWrap.mouseleave(function (e) { //當(dāng)鼠標(biāo)離開時,使遮罩層隱藏 $("#imgLoc").css("display","none") //當(dāng)鼠標(biāo)離開時,使放大鏡隱藏 $(".manifyImg").css("display","none") }) //監(jiān)聽鼠標(biāo)的移動事件 $imgWrap.mousemove(function (e) { //得到商品大圖的相對于頁面的橫坐標(biāo) var imgX=document.getElementById("imgMainWrap").getBoundingClientRect().left //得到商品大圖的相對于頁面的縱坐標(biāo) var imgY=document.getElementById("imgMainWrap").getBoundingClientRect().top //得到鼠標(biāo)相對于商品大圖的橫坐標(biāo),使用鼠標(biāo)相對于頁面的橫坐標(biāo)減去商品大圖相對于頁面的坐標(biāo) var cursorX=e.clientX-imgX //得到鼠標(biāo)相對于商品大圖的縱坐標(biāo) var cursorY=e.clientY-imgY //得到遮罩層的坐標(biāo),106是遮罩層邊長的一半 var maskX=(cursorX-106)+"px" var maskY=(cursorY-106)+"px" //保證遮罩層是完整的 if (cursorX<106) { maskX="0px" }else if (cursorX>310) { maskX="200px" } if (cursorY<106) { maskY="0px" }else if (cursorY>310) { maskY="200px" } //計(jì)算得到放大鏡中圖片的顯示位置 var maginfyX=-parseInt(maskX)*2+"px" var maginfyY=-parseInt(maskY)*2+"px" //設(shè)置遮罩層的位置 $("#imgLoc").css("left",maskX) $("#imgLoc").css("top",maskY) //設(shè)置放大鏡中圖片的位置 $(".manifyImg img").css("left",maginfyX) $(".manifyImg img").css("top",maginfyY) })
以下是HTML結(jié)構(gòu)
div.detail-img
a(href="javascript:;").detail-img-main#imgMainWrap img(src="./images/detail/band/b1.jpg")#imgMain div#imgLoc div.manifyImg img(src="./images/detail/band/b1.jpg")
請輸入代碼
查看完整項(xiàng)目可以去我的GitHub,歡迎大家的下載、提問和關(guān)注哈。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/84010.html
摘要:使用鼠標(biāo)的坐標(biāo)值減去遮罩層的一半的寬度,從而得到遮罩層顯示的位置。最后添加鼠標(biāo)離開的監(jiān)聽事件,當(dāng)鼠標(biāo)離開商品大圖時隱藏遮罩層以及放大鏡。 在詳情頁瀏覽時商品大圖還是不能完全看清楚商品的細(xì)節(jié),該特效實(shí)現(xiàn)鼠標(biāo)懸停在商品大圖上時,在商品大圖右側(cè)出現(xiàn)放大鏡效果并根據(jù)鼠標(biāo)的位置來改變右側(cè)大圖的顯示內(nèi)容,放大鏡中的內(nèi)容和鼠標(biāo)懸停位置的內(nèi)容相同。該特效的實(shí)現(xiàn)效果圖為:showImg(https://...
摘要:使用鼠標(biāo)的坐標(biāo)值減去遮罩層的一半的寬度,從而得到遮罩層顯示的位置。最后添加鼠標(biāo)離開的監(jiān)聽事件,當(dāng)鼠標(biāo)離開商品大圖時隱藏遮罩層以及放大鏡。 在詳情頁瀏覽時商品大圖還是不能完全看清楚商品的細(xì)節(jié),該特效實(shí)現(xiàn)鼠標(biāo)懸停在商品大圖上時,在商品大圖右側(cè)出現(xiàn)放大鏡效果并根據(jù)鼠標(biāo)的位置來改變右側(cè)大圖的顯示內(nèi)容,放大鏡中的內(nèi)容和鼠標(biāo)懸停位置的內(nèi)容相同。該特效的實(shí)現(xiàn)效果圖為:showImg(https://...
摘要:前端日報(bào)點(diǎn)贊通道精選聽說你沒來騰訊前端求職直播課筆試篇淘寶漏洞修補(bǔ)記一次踩坑記錄中的對象精讀發(fā)布中文深入理解筆記塊級作用域綁定架構(gòu)經(jīng)驗(yàn)分享深入理解筆記字符串和正則表達(dá)式架構(gòu)經(jīng)驗(yàn)分享深入理解筆記導(dǎo)讀架構(gòu)經(jīng)驗(yàn)分享第期種使用提升應(yīng) 2017-07-16 前端日報(bào) GitHub點(diǎn)贊通道 精選 聽說你沒來 JSConf 2017騰訊前端求職直播課——筆試篇淘寶 flexible.js 漏洞修補(bǔ):...
摘要:晚上又不想看書屋里光線不好,最近正好在跟著權(quán)哥學(xué)習(xí)和,不如自己寫一個以后能用到的后臺模板來玩玩練練手。把重寫成不太確定,明天去問問權(quán)哥,哎呀寫文檔是真的有用把這個文件和文件都拖到網(wǎng)站根目錄下,然后把中的加載框架引導(dǎo)文件改成正確讀取的路徑。 今天下班回來走在路上,剛下過雨,又出了太陽。 步行從公司到租的房子里,路過人民公園,空氣一度讓人覺的這根本不是鄭州的樣子。公司里有些讓人不快的事情也...
閱讀 2703·2023-04-25 19:13
閱讀 4041·2021-09-22 15:34
閱讀 3061·2019-08-30 14:23
閱讀 1470·2019-08-29 17:17
閱讀 1611·2019-08-29 16:05
閱讀 1544·2019-08-29 13:26
閱讀 1223·2019-08-29 13:19
閱讀 561·2019-08-29 13:16