scroll-marker-group

可用性有限

此特性不是基線特性,因為它在一些最廣泛使用的瀏覽器中不起作用。

實驗性: 這是一項實驗性技術
在生產中使用此技術之前,請仔細檢查瀏覽器相容性表格

scroll-marker-group CSS 屬性控制 滾動容器 元素是否生成 ::scroll-marker-group 偽元素。如果存在,該屬性還指定滾動標記組在預設視覺和 Tab 鍵順序中應放置在滾動組容器內容的 before(之前) after(之後)。

注意:要從一個包含一組 <a> 元素的現有元素建立滾動標記組容器,請使用 scroll-target-group 屬性。閱讀有關這兩種屬性的行為差異

語法

css
/* Single values */
scroll-marker-group: before;
scroll-marker-group: after;
scroll-marker-group: none;

/* Global values */
scroll-marker-group: inherit;
scroll-marker-group: initial;
scroll-marker-group: revert;
scroll-marker-group: revert-layer;
scroll-marker-group: unset;

after

一個 ::scroll-marker-group 偽元素作為滾動容器子 DOM 元素的同級元素生成,緊接在它們和任何生成的 ::scroll-button() 偽元素之前。它出現在容器的 Tab 鍵順序和佈局框順序的末尾(但不是 DOM 結構)。

before

一個 ::scroll-marker-group 偽元素作為滾動容器子 DOM 元素的同級元素生成,緊接在它們和任何生成的 ::scroll-button() 偽元素之前。滾動標記組出現在容器的 Tab 鍵順序和佈局框順序的開頭。

none

元素上不會生成 ::scroll-marker-group 偽元素。這是預設值。

注意:作為可訪問性最佳實踐,將滾動標記組容器的視覺渲染位置與 Tab 鍵順序匹配。當使用應用於 ::scroll-marker-group 的樣式將標記組定位在內容開頭時,使用 before 將其放在 Tab 鍵順序的開頭。當將組定位在內容的末尾時,使用 after 將其放在 Tab 鍵順序的末尾。

正式定義

在資料庫中未找到值!

正式語法

scroll-marker-group = 
none |
before |
after

示例

請參閱建立 CSS 輪播,瞭解使用 scroll-marker-group 屬性的完整示例。

滾動標記的放置

在此示例中,我們演示了 scroll-marker-group 屬性的三個值。

HTML

我們有一個基本的 HTML <ul> 列表,包含幾個 <li> 列表項。

html
<ul>
  <li>Item 1</li>
  <li>Item 2</li>
  <li>Item 3</li>
  <li>Item 4</li>
  <li>Item 5</li>
  <li>Item 6</li>
  <li>Item 7</li>
  <li>Item 8</li>
</ul>

CSS

我們透過將 display 設定為 flex,將我們的 <ul> 轉換為輪播,建立一行不換行的 <li> 元素。overflow-x 屬性設定為 auto,這意味著如果專案在 x 軸上溢位其容器,內容將水平滾動。然後我們將 <ul> 轉換為一個 滾動捕捉容器,確保當容器使用 mandatoryscroll-snap-type 值滾動時,專案總是捕捉到位。

我們使用 scroll-marker-group 屬性建立一個滾動標記組容器,將組放置在所有內容之後。

css
ul {
  display: flex;
  gap: 4vw;
  padding-left: 0;
  margin: 32px 0;
  overflow-x: auto;
  overscroll-behavior-x: contain;
  scroll-snap-type: x mandatory;

  scroll-marker-group: after;
}

接下來,我們使用 flex 屬性將 <li> 元素樣式化為容器寬度的 33%scroll-snap-alignstart 值使得當內容滾動時,最左側可見項的左側邊緣捕捉到容器的左邊緣。

css
li {
  list-style-type: none;
  background-color: #eeeeee;
  flex: 0 0 33%;
  scroll-snap-align: start;
  text-align: center;
  line-height: 5;
}

然後我們使用 ::scroll-marker 偽元素為每個列表項建立一個帶有紅色邊框的正方形標記,並對 ::scroll-marker-group 偽元素應用樣式,以將滾動標記排成一行,每個標記之間有 0.2em 的間隙。

css
li::scroll-marker {
  content: " ";
  border: 1px solid red;
  height: 1em;
  width: 1em;
}

::scroll-marker-group {
  display: flex;
  gap: 0.2em;
}

最後,為確保良好的使用者體驗,我們使用 :target-current 偽類定位當前滾動元素的標記,並將其樣式與其他標記不同。

css
::scroll-marker:target-current {
  background: red;
}

結果

注意滾動標記組容器的放置位置。檢視 beforeafter 的鍵盤 Tab 鍵順序有何不同,並注意當值設定為 none 時組如何消失。

規範

規範
CSS Overflow Module Level 5
# scroll-marker-group-property

瀏覽器相容性

另見