Skip to content

ScrollArea 滾動區域

可客製化樣式的滾動區塊元件,擴充瀏覽器原生捲動行為以便做一致的跨瀏覽器捲動樣式與控制。

基本使用

基本使用

基本的滾動區域,包含垂直和水平滾動

標籤

v1.2.0-beta.1
v1.2.0-beta.2
v1.2.0-beta.3
v1.2.0-beta.4
v1.2.0-beta.5
v1.2.0-beta.6
v1.2.0-beta.7
v1.2.0-beta.8
v1.2.0-beta.9
v1.2.0-beta.10
v1.2.0-beta.11
v1.2.0-beta.12
v1.2.0-beta.13
v1.2.0-beta.14
v1.2.0-beta.15
v1.2.0-beta.16
v1.2.0-beta.17
v1.2.0-beta.18
v1.2.0-beta.19
v1.2.0-beta.20
v1.2.0-beta.21
v1.2.0-beta.22
v1.2.0-beta.23
v1.2.0-beta.24
v1.2.0-beta.25
v1.2.0-beta.26
v1.2.0-beta.27
v1.2.0-beta.28
v1.2.0-beta.29
v1.2.0-beta.30
v1.2.0-beta.31
v1.2.0-beta.32
v1.2.0-beta.33
v1.2.0-beta.34
v1.2.0-beta.35
v1.2.0-beta.36
v1.2.0-beta.37
v1.2.0-beta.38
v1.2.0-beta.39
v1.2.0-beta.40
v1.2.0-beta.41
v1.2.0-beta.42
v1.2.0-beta.43
v1.2.0-beta.44
v1.2.0-beta.45
v1.2.0-beta.46
v1.2.0-beta.47
v1.2.0-beta.48
v1.2.0-beta.49
v1.2.0-beta.50

自定義滾動控制

透過組件 ref 取得滾動控制方法,可程式化控制滾動位置。

自定義滾動控制

透過組件方法控制滾動位置,支援滾動到頂部、底部等功能

頂部區域

這是滾動區域的頂部內容,點擊「滾動到頂部」可以滾動到這裡。

項目 1

這是第 1 個項目的描述內容,用於展示滾動功能。內容可能會比較長,以便測試水平滾動效果。

項目 2

這是第 2 個項目的描述內容,用於展示滾動功能。內容可能會比較長,以便測試水平滾動效果。

項目 3

這是第 3 個項目的描述內容,用於展示滾動功能。內容可能會比較長,以便測試水平滾動效果。

項目 4

這是第 4 個項目的描述內容,用於展示滾動功能。內容可能會比較長,以便測試水平滾動效果。

項目 5

這是第 5 個項目的描述內容,用於展示滾動功能。內容可能會比較長,以便測試水平滾動效果。

項目 6

這是第 6 個項目的描述內容,用於展示滾動功能。內容可能會比較長,以便測試水平滾動效果。

項目 7

這是第 7 個項目的描述內容,用於展示滾動功能。內容可能會比較長,以便測試水平滾動效果。

項目 8

這是第 8 個項目的描述內容,用於展示滾動功能。內容可能會比較長,以便測試水平滾動效果。

項目 9

這是第 9 個項目的描述內容,用於展示滾動功能。內容可能會比較長,以便測試水平滾動效果。

項目 10

這是第 10 個項目的描述內容,用於展示滾動功能。內容可能會比較長,以便測試水平滾動效果。

項目 11

這是第 11 個項目的描述內容,用於展示滾動功能。內容可能會比較長,以便測試水平滾動效果。

項目 12

這是第 12 個項目的描述內容,用於展示滾動功能。內容可能會比較長,以便測試水平滾動效果。

項目 13

這是第 13 個項目的描述內容,用於展示滾動功能。內容可能會比較長,以便測試水平滾動效果。

項目 14

這是第 14 個項目的描述內容,用於展示滾動功能。內容可能會比較長,以便測試水平滾動效果。

項目 15

這是第 15 個項目的描述內容,用於展示滾動功能。內容可能會比較長,以便測試水平滾動效果。

底部區域

這是滾動區域的底部內容,點擊「滾動到底部」可以滾動到這裡。

捲軸顯示類型

支援四種不同的捲軸顯示策略。

捲軸顯示類型

展示不同的捲軸顯示策略:auto、always、scroll、hover

Auto(預設)

內容溢出時顯示捲軸

Auto 類型項目 1
Auto 類型項目 2
Auto 類型項目 3
Auto 類型項目 4
Auto 類型項目 5
Auto 類型項目 6
Auto 類型項目 7
Auto 類型項目 8
Auto 類型項目 9
Auto 類型項目 10

Always

總是顯示捲軸

Always 類型項目 1
Always 類型項目 2
Always 類型項目 3
Always 類型項目 4
Always 類型項目 5
Always 類型項目 6
Always 類型項目 7
Always 類型項目 8

Scroll

滾動時顯示捲軸

Scroll 類型項目 1
Scroll 類型項目 2
Scroll 類型項目 3
Scroll 類型項目 4
Scroll 類型項目 5
Scroll 類型項目 6
Scroll 類型項目 7
Scroll 類型項目 8
Scroll 類型項目 9
Scroll 類型項目 10
Scroll 類型項目 11
Scroll 類型項目 12

Hover

hover 或滾動時顯示捲軸

Hover 類型項目 1
Hover 類型項目 2
Hover 類型項目 3
Hover 類型項目 4
Hover 類型項目 5
Hover 類型項目 6
Hover 類型項目 7
Hover 類型項目 8
Hover 類型項目 9
Hover 類型項目 10
Hover 類型項目 11
Hover 類型項目 12

水平滾動

包含水平和垂直滾動的內容

名稱狀態描述建立時間操作
專案項目 1 進行中 這是一個很長的描述文字,用來測試水平滾動功能 2024-08-01
專案項目 2 進行中 這是一個很長的描述文字,用來測試水平滾動功能 2024-08-02
專案項目 3 進行中 這是一個很長的描述文字,用來測試水平滾動功能 2024-08-03
專案項目 4 進行中 這是一個很長的描述文字,用來測試水平滾動功能 2024-08-04
專案項目 5 進行中 這是一個很長的描述文字,用來測試水平滾動功能 2024-08-05
專案項目 6 進行中 這是一個很長的描述文字,用來測試水平滾動功能 2024-08-06
專案項目 7 進行中 這是一個很長的描述文字,用來測試水平滾動功能 2024-08-07
專案項目 8 進行中 這是一個很長的描述文字,用來測試水平滾動功能 2024-08-08
專案項目 9 進行中 這是一個很長的描述文字,用來測試水平滾動功能 2024-08-09
專案項目 10 進行中 這是一個很長的描述文字,用來測試水平滾動功能 2024-08-10
專案項目 11 進行中 這是一個很長的描述文字,用來測試水平滾動功能 2024-08-11
專案項目 12 進行中 這是一個很長的描述文字,用來測試水平滾動功能 2024-08-12
專案項目 13 進行中 這是一個很長的描述文字,用來測試水平滾動功能 2024-08-13
專案項目 14 進行中 這是一個很長的描述文字,用來測試水平滾動功能 2024-08-14
專案項目 15 進行中 這是一個很長的描述文字,用來測試水平滾動功能 2024-08-15

滾動方向控制

透過 scrollXscrollY props 控制允許的滾動方向。

滾動方向控制

透過 horizontal 和 vertical props 控制允許的滾動方向

僅垂直滾動

scrollY=true, scrollX=false(預設)

垂直滾動項目 1 - 這是一段很長的文字用來測試水平方向的內容溢出但不會顯示水平捲軸
垂直滾動項目 2 - 這是一段很長的文字用來測試水平方向的內容溢出但不會顯示水平捲軸
垂直滾動項目 3 - 這是一段很長的文字用來測試水平方向的內容溢出但不會顯示水平捲軸
垂直滾動項目 4 - 這是一段很長的文字用來測試水平方向的內容溢出但不會顯示水平捲軸
垂直滾動項目 5 - 這是一段很長的文字用來測試水平方向的內容溢出但不會顯示水平捲軸
垂直滾動項目 6 - 這是一段很長的文字用來測試水平方向的內容溢出但不會顯示水平捲軸
垂直滾動項目 7 - 這是一段很長的文字用來測試水平方向的內容溢出但不會顯示水平捲軸
垂直滾動項目 8 - 這是一段很長的文字用來測試水平方向的內容溢出但不會顯示水平捲軸
垂直滾動項目 9 - 這是一段很長的文字用來測試水平方向的內容溢出但不會顯示水平捲軸
垂直滾動項目 10 - 這是一段很長的文字用來測試水平方向的內容溢出但不會顯示水平捲軸
垂直滾動項目 11 - 這是一段很長的文字用來測試水平方向的內容溢出但不會顯示水平捲軸
垂直滾動項目 12 - 這是一段很長的文字用來測試水平方向的內容溢出但不會顯示水平捲軸

僅水平滾動

scrollY=false, scrollX=true

水平項目 1
水平項目 2
水平項目 3
水平項目 4
水平項目 5
水平項目 6
水平項目 7
水平項目 8
水平項目 9
水平項目 10
水平項目 11
水平項目 12
水平項目 13
水平項目 14
水平項目 15
水平項目 16
水平項目 17
水平項目 18
水平項目 19
水平項目 20

雙向滾動

scrollY=true, scrollX=true

雙向滾動項目 1:這是一段很長的文字內容,會觸發水平滾動,同時垂直方向也有多行內容會觸發垂直滾動
雙向滾動項目 2:這是一段很長的文字內容,會觸發水平滾動,同時垂直方向也有多行內容會觸發垂直滾動
雙向滾動項目 3:這是一段很長的文字內容,會觸發水平滾動,同時垂直方向也有多行內容會觸發垂直滾動
雙向滾動項目 4:這是一段很長的文字內容,會觸發水平滾動,同時垂直方向也有多行內容會觸發垂直滾動
雙向滾動項目 5:這是一段很長的文字內容,會觸發水平滾動,同時垂直方向也有多行內容會觸發垂直滾動
雙向滾動項目 6:這是一段很長的文字內容,會觸發水平滾動,同時垂直方向也有多行內容會觸發垂直滾動
雙向滾動項目 7:這是一段很長的文字內容,會觸發水平滾動,同時垂直方向也有多行內容會觸發垂直滾動
雙向滾動項目 8:這是一段很長的文字內容,會觸發水平滾動,同時垂直方向也有多行內容會觸發垂直滾動
雙向滾動項目 9:這是一段很長的文字內容,會觸發水平滾動,同時垂直方向也有多行內容會觸發垂直滾動
雙向滾動項目 10:這是一段很長的文字內容,會觸發水平滾動,同時垂直方向也有多行內容會觸發垂直滾動

禁用滾動

scrollY=false, scrollX=false

無滾動項目 1 - 內容溢出但不會顯示任何捲軸,內容會被裁切
無滾動項目 2 - 內容溢出但不會顯示任何捲軸,內容會被裁切
無滾動項目 3 - 內容溢出但不會顯示任何捲軸,內容會被裁切
無滾動項目 4 - 內容溢出但不會顯示任何捲軸,內容會被裁切
無滾動項目 5 - 內容溢出但不會顯示任何捲軸,內容會被裁切
無滾動項目 6 - 內容溢出但不會顯示任何捲軸,內容會被裁切
無滾動項目 7 - 內容溢出但不會顯示任何捲軸,內容會被裁切
無滾動項目 8 - 內容溢出但不會顯示任何捲軸,內容會被裁切
無滾動項目 9 - 內容溢出但不會顯示任何捲軸,內容會被裁切
無滾動項目 10 - 內容溢出但不會顯示任何捲軸,內容會被裁切

API

屬性

屬性類型預設值說明
type'auto' | 'always' | 'scroll' | 'hover''hover'捲軸顯示策略
scrollHideDelaynumber600停止互動後隱藏捲軸的延遲時間(毫秒)
dir'ltr' | 'rtl''ltr'讀取方向
scrollXbooleanfalse是否允許水平滾動
scrollYbooleantrue是否允許垂直滾動
classstring-自定義根元素的 class
stylestring | object-自定義根元素的 style

方法 Methods

透過 ref 取得組件實例後可呼叫以下方法:

方法說明
scrollTop()滾動到頂部
scrollTopLeft()滾動到左上角
scrollBottom()滾動到底部
scrollTo(options)滾動到指定位置
getViewport()取得 viewport 元素

插槽 Slots

插槽說明
default滾動區域的內容

樣式客製化

組件提供 CSS 變數供客製化樣式:

css
.sh-scroll-area {
  --scroll-thumb-color: theme('colors.gray.400');
  --scroll-thumb-hover-color: theme('colors.gray.500');
  --scroll-thumb-active-color: theme('colors.gray.600');
  --scroll-track-color: theme('colors.gray.100');
}

無障礙

  • 保留原生滾動行為以維持鍵盤導航支援
  • 支援螢幕閱讀器等輔助技術
  • 支援 RTL(right-to-left)布局
  • 鍵盤滾動由平台原生提供(PageUp/PageDown/方向鍵等)

注意事項

  • 滾動條置於內容之上,不佔用布局空間
  • 使用原生滾動確保最佳效能與相容性
  • type="scroll"type="hover" 模式下,可調整 scrollHideDelay 控制隱藏延遲
  • 支援同時水平與垂直滾動

Released under the MIT License.