微信瀏覽器下拉黑邊解決方案 wScroollFix
這篇文章主要介紹了微信瀏覽器下拉黑邊解決方案 wScroollFix,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
開始
由于在開發(fā)微信頁面的時(shí)候下拉黑邊的情況很常見,有時(shí)候會(huì)比較影響體驗(yàn),因此開發(fā)了wScrollFix庫,用于隱藏微信下拉的黑邊問題
什么是黑邊
相信很多在微信上面做網(wǎng)頁開發(fā)的同學(xué)都會(huì)發(fā)現(xiàn),當(dāng)頁面被劃到頂部或者底部的時(shí)候,如果繼續(xù)滑動(dòng),頁面會(huì)被整個(gè)進(jìn)行下滑,露出上面或者下面的黑底,黑底上面標(biāo)明了當(dāng)前訪問頁面的域名信息,黑邊的作用也很明顯,由于在微信內(nèi)瀏覽器并沒有像傳統(tǒng)瀏覽器地址欄那樣子的設(shè)計(jì),為了在一定程度上面防止釣魚網(wǎng)站,所以通過下拉顯示域名信息,如下圖
什么情況下會(huì)出現(xiàn)黑邊
現(xiàn)象就像上面所說的,如果到了元素的滾動(dòng)邊緣,即元素的scrollTop為0之后繼續(xù)下滑,或者是到滾動(dòng)到底部的時(shí)候,繼續(xù)操作就會(huì)出現(xiàn)以上的黑邊情況。
情況分析
上面我們分析了在微信瀏覽器中出現(xiàn)黑邊的情況,接下去我們聊一聊如何解決,
根據(jù)以上的思路,可以分為以下幾種情況去解決
對(duì)于不需要滾動(dòng)的頁面,我們可以直接將body元素的 touch事件直接preventDefault掉,這樣子頁面根元素就不會(huì)對(duì)頁面有滾動(dòng)事件的響應(yīng)了
第二種情況是頁面中有滾動(dòng)的元素,那么應(yīng)用于情況1的解決方法就不能用了,用了之后會(huì)使得整個(gè)頁面的滾動(dòng)失效,因此只能另辟蹊徑,回想下我們剛才的黑邊的出現(xiàn)情況,在scrollTop為0的時(shí)候,繼續(xù)操作會(huì)使得瀏覽器出現(xiàn)黑邊,因此我們可以讓滾動(dòng)的頂部不要到達(dá)scrollTop <= 0,還有底部不要到達(dá),這樣子上劃下劃到極限都不會(huì)出現(xiàn)黑邊了
第三種情況是第二種情況的特殊情況,就是當(dāng)列表不是靜態(tài)的,而是動(dòng)態(tài)加載的時(shí)候,某些操作,比如在列表加載之前滑動(dòng),或者是加載完之后默認(rèn)的scrollTop為0還繼續(xù)向上滑動(dòng)時(shí),可能就會(huì)出現(xiàn)黑邊
解決方案
對(duì)于我封裝的wScrollFix庫,主要解決的是上面說的情況2和情況3,情況1直接按照上面的做法對(duì)touch事件進(jìn)行綁定就行了
下面我說下解決情況2的方法:代碼如下
可以看到這個(gè)方法接受一個(gè)參數(shù),用于將獲取滾動(dòng)的容器元素,首先將scrollTop設(shè)置成1,然后在touchstart,scroll,touchmove事件對(duì)頁面元素滾動(dòng)進(jìn)行檢測(cè),確保scrollTop在1和底部高度減1之間,這樣子就不會(huì)出現(xiàn)黑邊
對(duì)于情況3,其實(shí)就是要在動(dòng)態(tài)列表插入之后能夠,能夠?qū)crollTop改成1,這邊我用了MutationObserver方案,代碼如下:
代碼使用了防抖防止插入多次頻繁回調(diào),回調(diào)的部分的邏輯也比較簡(jiǎn)單,就是將scrollTop變成1
wScrollFix
封裝的wScrollFix使用很簡(jiǎn)單,可以通過npm i wscrollfix直接進(jìn)行模塊引入,也可以在github直接進(jìn)行下載引入./dist/wScrollFix.js, 會(huì)向全局暴露wScrollFix方法。
使用方法就是把容器元素對(duì)象或者選擇器作為參數(shù)調(diào)用wScrollFix,如果有情況3的出現(xiàn),需要再傳一個(gè)true,即 wScrollFix(el,true)
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
JS+CSS實(shí)現(xiàn)鼠標(biāo)經(jīng)過彈出一個(gè)DIV框完整實(shí)例(帶緩沖動(dòng)畫漸變效果)
這篇文章主要介紹了JS+CSS實(shí)現(xiàn)鼠標(biāo)經(jīng)過彈出一個(gè)DIV框的實(shí)現(xiàn)方法,帶緩沖漸變動(dòng)畫效果,涉及鼠標(biāo)事件的響應(yīng)及結(jié)合時(shí)間函數(shù)定時(shí)觸發(fā)形成動(dòng)畫漸變效果的相關(guān)技巧,需要的朋友可以參考下2016-03-03JS題解leetcode去掉最低工資和最高工資后的工資平均值
這篇文章主要為大家介紹了JS題解leetcode去掉最低工資和最高工資后的工資平均值,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12詳細(xì)教你微信公眾號(hào)正文頁SVG交互開發(fā)技巧
這篇文章主要介紹了詳細(xì)教你微信公眾號(hào)正文頁SVG交互開發(fā)技巧,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07javascript innerHTML、outerHTML、innerText、outerText的區(qū)別
這篇文章主要介紹了javascript innerHTML、outerHTML、innerText、outerText的區(qū)別,本文講解了它們的功能、使用實(shí)例、和不同之處,需要的朋友可以參考下2008-11-11鼠標(biāo)選擇動(dòng)態(tài)改變網(wǎng)頁背景顏色的JS代碼
這篇文章主要介紹了鼠標(biāo)選擇動(dòng)態(tài)改變網(wǎng)頁背景顏色的JS代碼,有需要的朋友可以參考一下2013-12-12整理關(guān)于Bootstrap模態(tài)彈出框的慕課筆記
這篇文章主要為大家整理了關(guān)于Bootstrap模態(tài)彈出框的慕課筆記,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-03-03