校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > 詳解三種方式實(shí)現(xiàn)平滑滾動頁面到頂部的功能

詳解三種方式實(shí)現(xiàn)平滑滾動頁面到頂部的功能

熱門標(biāo)簽:欣鼎電銷機(jī)器人 效果 地圖標(biāo)注軟件打印出來 ok電銷機(jī)器人 電話機(jī)器人技術(shù) 黃石ai電銷機(jī)器人呼叫中心 高德地圖標(biāo)注商戶怎么標(biāo) 惡搞電話機(jī)器人 如何查看地圖標(biāo)注 智能電銷機(jī)器人被禁用了么

背景

最近開發(fā)公司的公眾號H5,做了一個(gè)點(diǎn)擊icon滾動到頂部的功能。實(shí)現(xiàn)功能比較簡單,直接調(diào)用window.scrollTo(0, 0),一行代碼完成。但是作為一個(gè)攻城獅,怎么可能對自己要求這么低,所以我給自己加了個(gè)需求,實(shí)現(xiàn) 平滑滾動頁面到頂部 的功能。經(jīng)過調(diào)研和查看文檔,有了以下三種方案。

1.使用CSS

完成功能的最高境界,只用CSS就搞定。代碼如下:

html {
    scroll-behavior: smooth;
}

該樣式的作用是為有滾動條的元素指定一個(gè)滾動的行為,但是只有在當(dāng)用戶手動導(dǎo)航或者 CSSOM scrolling API觸發(fā)滾動的時(shí)候生效,不影響用戶行為產(chǎn)生的滾動。就在我慶祝的時(shí)候,打開can i use看了下兼容性:

日了狗,還是老老實(shí)實(shí)用JS實(shí)現(xiàn)吧。

2.使用Window.scrollTo API

我們都知道window.scrollTo(x, y),通過傳入文檔中的x,y軸坐標(biāo)來實(shí)現(xiàn)滾動到頁面某個(gè)位置的功能。這個(gè)API其實(shí)還可以傳入一個(gè)option,是一個(gè)對象,left值對應(yīng)坐標(biāo)中的x,top對應(yīng)坐標(biāo)中的y,還有一個(gè)值為behavior,可以讓你自定義滾動行為,然后我們這樣來實(shí)現(xiàn)滾動到頂部:

window.scrollTo({
    left: 0,
    top: 0,
    behavior: 'smooth'
})

真香,搞定。過了幾天,產(chǎn)品經(jīng)理扛著5米大刀來找我,說在Safari上滾動效果奇怪,體檢極差。于是我默默打開了MDN文檔,滾動到底部:

看到了這張圖,雖然API瀏覽器都幾乎支持,但是option選項(xiàng)在Safari上直接掛掉,于是我又打開了stackoverflow,總結(jié)了終極方案。

3.使用requestAnimationFrame

經(jīng)常能看到大名鼎鼎的requestAnimationFrame,但是沒機(jī)會用上,這次可以嘗嘗鮮了。我們知道requestAnimationFrame的作用就是告訴瀏覽器在下次重繪之前執(zhí)行傳入的回調(diào)函數(shù),這個(gè)行為是瀏覽器自動幫你做的。于是有了如下代碼:

const scrollToTop = () => {
    let scrollTop = document.documentElement.scrollTo || document.body.scrollTop
    if (scrollTop > 0) {
        window.requestAnimationFrame(scrollTop)
        window.scrollTop(0, scrollTop - scrollTo / 8)
    }
}

Done?。?!Perfect?。?!雀躍的同時(shí),我還是打開了can i use查看了requestAnimationFrame的兼容性:

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

標(biāo)簽:綏化 赤峰 萍鄉(xiāng) 金昌 中山 阿壩 聊城 盤錦

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《詳解三種方式實(shí)現(xiàn)平滑滾動頁面到頂部的功能》,本文關(guān)鍵詞  詳解,三種,方式,實(shí)現(xiàn),平滑,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《詳解三種方式實(shí)現(xiàn)平滑滾動頁面到頂部的功能》相關(guān)的同類信息!
  • 本頁收集關(guān)于詳解三種方式實(shí)現(xiàn)平滑滾動頁面到頂部的功能的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 漳平市| 临城县| 邛崃市| 宜宾市| 全州县| 婺源县| 青海省| 东乡县| 秦安县| 富蕴县| 渑池县| 多伦县| 苍溪县| 安陆市| 松桃| 益阳市| 宿迁市| 沙雅县| 桦南县| 乐平市| 冕宁县| 西和县| 多伦县| 梁山县| 苗栗市| 泰来县| 甘德县| 孟州市| 灵山县| 松溪县| 无为县| 任丘市| 祁阳县| 福鼎市| 棋牌| 乌兰浩特市| 苍梧县| 历史| 静宁县| 泸定县| 双桥区|