麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > HTML > 正文

詳解三種方式實現平滑滾動頁面到頂部的功能

2024-08-26 00:21:24
字體:
來源:轉載
供稿:網友

背景

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

1.使用CSS

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

html {    scroll-behavior: smooth;}

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

平滑,滾動頁面,頂部

日了狗,還是老老實實用JS實現吧。

2.使用Window.scrollTo API

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

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

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

平滑,滾動頁面,頂部

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

3.使用requestAnimationFrame

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

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

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

平滑,滾動頁面,頂部

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到HTML教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 青草久久av | 久久国产亚洲精品 | 日韩黄色精品 | 欧美综合在线观看视频 | 91成人免费版 | 色妞妞视频| 一二区成人影院电影网 | 精品国产一区二区三区久久久蜜 | 国产乱淫a∨片免费视频 | 亚洲一区二区免费视频 | 九九热九九 | 沉沦的校花奴性郑依婷c到失禁 | 日本a在线观看 | 欧美日韩一 | 精品一区视频 | 国产91小视频在线观看 | 在线a亚洲视频播放在线观看 | 国产在线区 | 久久新网址 | 久久久一区二区三区四区 | 亚洲欧美在线视频免费 | 爱看久久 | 亚洲免费永久 | 美女黄网站免费观看 | 毛片视频网站 | 国产美女爽到喷白浆的 | av电影在线免费 | 欧美成人精品一区 | 国产超碰人人做人人爱ⅴa 国产精品久久久久久久hd | 久久国产秒| 亚洲国产精品99 | 激情视频免费看 | 国产一级一级片 | 一区二区三区视频在线 | 国产亚洲欧美在线视频 | 又黄又爽免费无遮挡在线观看 | av日韩一区二区三区 | 欧美久久久一区二区三区 | 成年人免费黄色片 | 欧美成人a | 看免费的毛片 |