用原生js自定義滾動條,怎麼實現,pc端的?

時間 2021-11-03 20:20:09

1樓:

如果你只是想改變樣式,那麼對 Chrome 和 Firefox 寫專門的 CSS 屬性就好了。如果你還期望改變行為,那確實需要用 JS 來寫,這裡可以簡單說一下思路。

>

>

>

/>scrollbar-content

>scrollbar-content-container

>

>

/>horizontal-scrollbar-rail

>

>

/>vertical-scrollbar-rail

>scrollbar-component

>預設你會用前端框架來實現。用 CSS 先清理掉原生滾動條的寬度和高度,不要顯示它們,overflow 設定為 auto。拿到 和 的寬度和高度,然後計算出滾動條的高度,具體計算可能繁瑣一點。

之後監聽 的 scroll 事件,根據 scrollTop 和 scrollLeft 計算出滾動條的偏移。同時用 ResizeObserver 監聽 和 的尺寸變化, 每當變化時重新計算整體滾動條。

ResizeObserver 的相容性問題引入 polyfill 解決。

具體實現的時候會有一些 CSS 方面的 trick,根據個人經驗,想實現在任何條件下都和瀏覽器效果 100% 一致的滾動條是不太好做到的,但是在絕大多數情況下表現正常沒有問題,只會有一些特殊場景出現異常情況。

放個實際效果。

依賴 JS 實現的滾動條

keras如何自定義triplet loss損失函式?

周周周 請問我想用keras自定義loss函式,loss y true 0 log y pred y true 0 log 1 y pred 我在實現過程中老是報錯,能麻煩您指導下嗎 其中 x 表示滿足x條件返回1 否則返回0 Rainman 22 這種操作是可以的。我用keras試驗過可行。但是最...

Swift Haskell 等可以自定義運算子的語言(不僅是過載),實現編譯器時跟其他語言有什麼區別?

深海 其他語言我不太了解,簡單說一下 Swift 的實現.Swift Haskell 還有不少函式式語言實現運算子的思路是一樣的 規定運算子必須由某些特殊字元構成,且這些字元和構成識別符號 identifier 的字符集的交集為空.這樣一來,lexer 就很簡單了,和傳統編譯器沒差.除了中綴 二元 ...

自定義android studio的配置檔案目錄後,無法正常安裝和解除安裝外掛程式,是何原因?

大攀 這個問題我解決了,應該是配置plugins路徑的問題,直接貼修復好的配置 idea.config.path D AndroidStudio2.0 config Uncomment this option if you want to customize path to IDE system f...