摘要:背景最近開發(fā)公司的公眾號,做了一個點擊滾動到頂部的功能。但是作為一個攻城獅,怎么可能對自己要求這么低,所以我給自己加了個需求,實現(xiàn)平滑滾動頁面到頂部的功能。使用我們都知道,通過傳入文檔中的,軸坐標(biāo)來實現(xiàn)滾動到頁面某個位置的功能。
背景
最近開發(fā)公司的公眾號H5,做了一個點擊icon滾動到頂部的功能。實現(xiàn)功能比較簡單,直接調(diào)用window.scrollTo(0, 0),一行代碼完成。但是作為一個攻城獅,怎么可能對自己要求這么低,所以我給自己加了個需求,實現(xiàn)平滑滾動頁面到頂部的功能。經(jīng)過調(diào)研和查看文檔,有了以下三種方案。
1.使用CSS完成功能的最高境界,只用CSS就搞定。代碼如下:
html { scroll-behavior: smooth; }
該樣式的作用是為有滾動條的元素指定一個滾動的行為,但是只有在當(dāng)用戶手動導(dǎo)航或者 CSSOM scrolling API觸發(fā)滾動的時候生效,不影響用戶行為產(chǎn)生的滾動。就在我慶祝的時候,打開can i use看了下兼容性:
日了狗,還是老老實實用JS實現(xiàn)吧。
我們都知道window.scrollTo(x, y),通過傳入文檔中的x,y軸坐標(biāo)來實現(xiàn)滾動到頁面某個位置的功能。這個API其實還可以傳入一個option,是一個對象,left值對應(yīng)坐標(biāo)中的x,top對應(yīng)坐標(biāo)中的y,還有一個值為behavior,可以讓你自定義滾動行為,然后我們這樣來實現(xiàn)滾動到頂部:
window.scrollTo({ left: 0, top: 0, behavior: "smooth" })
真香,搞定。過了幾天,產(chǎn)品經(jīng)理扛著5米大刀來找我,說在Safari上滾動效果奇怪,體檢極差。于是我默默打開了MDN文檔,滾動到底部:
看到了這張圖,雖然API瀏覽器都幾乎支持,但是option選項在Safari上直接掛掉,于是我又打開了stackoverflow,總結(jié)了終極方案。
經(jīng)常能看到大名鼎鼎的requestAnimationFrame,但是沒機會用上,這次可以嘗嘗鮮了。我們知道requestAnimationFrame的作用就是告訴瀏覽器在下次重繪之前執(zhí)行傳入的回調(diào)函數(shù),這個行為是瀏覽器自動幫你做的。于是有了如下代碼:
const scrollToTop = () => { let sTop = document.documentElement.scrollTop || document.body.scrollTop if (sTop > 0) { window.requestAnimationFrame(scrollToTop) window.scrollTop(0, sTop - sTop / 8) } }
Done!!!Perfect!!!雀躍的同時,我還是打開了can i use查看了requestAnimationFrame的兼容性:
晚上吃雞!!!
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/103768.html
摘要:背景最近開發(fā)公司的公眾號,做了一個點擊滾動到頂部的功能。但是作為一個攻城獅,怎么可能對自己要求這么低,所以我給自己加了個需求,實現(xiàn)平滑滾動頁面到頂部的功能。使用我們都知道,通過傳入文檔中的,軸坐標(biāo)來實現(xiàn)滾動到頁面某個位置的功能。 背景 最近開發(fā)公司的公眾號H5,做了一個點擊icon滾動到頂部的功能。實現(xiàn)功能比較簡單,直接調(diào)用window.scrollTo(0, 0),一行代碼完成。但是...
摘要:在瀏覽器中,頁面默認滾動是在標(biāo)簽上,移動端大多數(shù)在標(biāo)簽上,在我們想要實現(xiàn)平滑回到頂部,只需在這兩個標(biāo)簽上都加上準(zhǔn)確的說,寫在容器元素上,可以讓容器非鼠標(biāo)手勢觸發(fā)的滾動變得平滑,而不局限于,標(biāo)簽。 前言 在實際應(yīng)用中,經(jīng)常用到滾動到頁面頂部或某個位置,一般簡單用錨點處理或用js將document.body.scrollTop設(shè)置為0,結(jié)果是頁面一閃而過滾到指定位置,不是特別友好。我們想要...
摘要:在瀏覽器中,頁面默認滾動是在標(biāo)簽上,移動端大多數(shù)在標(biāo)簽上,在我們想要實現(xiàn)平滑回到頂部,只需在這兩個標(biāo)簽上都加上準(zhǔn)確的說,寫在容器元素上,可以讓容器非鼠標(biāo)手勢觸發(fā)的滾動變得平滑,而不局限于,標(biāo)簽。 前言 在實際應(yīng)用中,經(jīng)常用到滾動到頁面頂部或某個位置,一般簡單用錨點處理或用js將document.body.scrollTop設(shè)置為0,結(jié)果是頁面一閃而過滾到指定位置,不是特別友好。我們想要...
摘要:從本人這兩個月移動實踐的經(jīng)驗來看,微信的里面和的滑動效果無論是在安卓還是下的體驗都很一般,有明顯的卡頓現(xiàn)象,在安卓下面還會出現(xiàn)滑動過快的時候在頁面停下來之后滾動條才閃到相應(yīng)位置的現(xiàn)象。 前言 在微信里面瀏覽頁面的時候,有一個很管用的方法可以區(qū)分這個頁面是原生的還是H5形式的。隨便打開一個頁面,用力往下扯的時候,如果頁面上方出現(xiàn)了黑底,黑底上有一行諸如網(wǎng)頁由game.weixin.qq....
摘要:平滑滾動到頂部底部指定地方平滑滾動到頂部底部指定地方這部分是產(chǎn)品介紹這部分是產(chǎn)品介紹這部分是產(chǎn)品介紹這部分是產(chǎn)品介紹這部分是產(chǎn)品介紹返回頂部產(chǎn)品介紹滑到底部js平滑滾動到頂部、底部、指定地方 DOCTYPE html> js平滑滾動到頂部、底部、指定地方 .box{ height:200px; width:100%; backgro...
閱讀 1711·2021-11-22 12:09
閱讀 1451·2019-08-30 13:22
閱讀 2083·2019-08-29 17:00
閱讀 2634·2019-08-29 16:28
閱讀 2945·2019-08-26 13:51
閱讀 1174·2019-08-26 13:25
閱讀 3237·2019-08-26 12:14
閱讀 3006·2019-08-26 12:14