view-timeline-name

可用性有限

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

view-timeline-name CSS 屬性用於定義命名檢視進度時間線的名稱。該時間線根據可滾動元素(滾動器)內元素(稱為主題)的可見性變化而推進。view-timeline 在主題上設定。

主題在滾動器內的可見性被跟蹤——預設情況下,當主題首次在滾動器的一邊可見時,時間線為0%,當它到達另一邊時,時間線為100%。該名稱隨後在 animation-timeline 宣告中被引用,以指示將隨時間線推進而動畫的元素。這可以是主題元素,但並非必須是——您可以在主題在滾動區域中移動時,為不同的元素設定動畫。

注意:如果滾動器元素在其軸維度上未溢位其容器,或者溢位被隱藏或剪裁,則不會建立滾動進度時間線。

view-timeline-nameview-timeline-axisview-timeline-inset 屬性也可以透過 view-timeline 簡寫屬性進行設定。

語法

css
view-timeline-name: none;
view-timeline-name: --custom_name_for_timeline;

view-timeline-name 的允許值是:

none

時間線沒有名稱。

<dashed-ident>

任意自定義識別符號,用於定義檢視進度時間線的名稱,該名稱隨後可以在 animation-timeline 屬性中引用。

注意:<dashed-ident> 值必須以 -- 開頭,這有助於避免與標準 CSS 關鍵字發生名稱衝突。

正式定義

初始值none
應用於所有元素
繼承性
計算值none 或識別符號的有序列表
動畫型別不可動畫化

正式語法

view-timeline-name = 
[ none | <dashed-ident> ]#

示例

建立命名檢視進度時間線

名為 --subject-reveal 的檢視進度時間線使用 view-timeline-name 屬性在一個帶有 animation 類的主題元素上定義。然後,使用 animation-timeline: --subject-reveal; 將其設定為同一元素的時間線。結果是,當滾動文件時,主題元素會隨著其向上移動而動畫。

HTML

示例的 HTML 如下所示。

html
<div class="content">
  <h1>Content</h1>

  <p>
    Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod
    tempor incididunt ut labore et dolore magna aliqua. Risus quis varius quam
    quisque id. Et ligula ullamcorper malesuada proin libero nunc consequat
    interdum varius. Elit ullamcorper dignissim cras tincidunt lobortis feugiat
    vivamus at augue.
  </p>

  <p>
    Dolor sed viverra ipsum nunc aliquet. Sed sed risus pretium quam vulputate
    dignissim. Tortor aliquam nulla facilisi cras. A erat nam at lectus urna
    duis convallis convallis. Nibh ipsum consequat nisl vel pretium lectus.
    Sagittis aliquam malesuada bibendum arcu vitae elementum. Malesuada bibendum
    arcu vitae elementum curabitur vitae nunc sed velit.
  </p>

  <div class="subject animation"></div>

  <p>
    Adipiscing enim eu turpis egestas pretium aenean pharetra magna ac. Arcu
    cursus vitae congue mauris rhoncus aenean vel. Sit amet cursus sit amet
    dictum. Augue neque gravida in fermentum et. Gravida rutrum quisque non
    tellus orci ac auctor augue mauris. Risus quis varius quam quisque id diam
    vel quam elementum. Nibh praesent tristique magna sit amet purus gravida
    quis. Duis ultricies lacus sed turpis tincidunt id aliquet. In egestas erat
    imperdiet sed euismod nisi. Eget egestas purus viverra accumsan in nisl nisi
    scelerisque. Netus et malesuada fames ac.
  </p>
</div>

CSS

subject 元素及其包含的 content 元素僅應用了最少的樣式,文字內容則設定了一些基本的字型樣式。

css
.subject {
  width: 300px;
  height: 200px;
  margin: 0 auto;
  background-color: deeppink;
}

.content {
  width: 75%;
  max-width: 800px;
  margin: 0 auto;
}

p,
h1 {
  font-family: "Helvetica", "Arial", sans-serif;
}

h1 {
  font-size: 3rem;
}

p {
  font-size: 1.5rem;
  line-height: 1.5;
}

帶有 subject 類的 <div> 也被賦予 animation 類——在這裡設定 view-timeline-name 來定義一個命名檢視進度時間線。它還被賦予一個具有相同值的 animation-timeline 名稱,以宣告這將是隨著檢視進度時間線推進而動畫的元素。

最後,在元素上指定了一個動畫,該動畫使其不透明度和縮放發生變化,從而在它向上移動捲軸時淡入並變大。

css
.animation {
  view-timeline-name: --subject-reveal;
  animation-timeline: --subject-reveal;

  animation-name: appear;
  animation-fill-mode: both;
  animation-duration: 1ms; /* Firefox requires this to apply the animation */
}

@keyframes appear {
  from {
    opacity: 0;
    transform: scaleX(0);
  }

  to {
    opacity: 1;
    transform: scaleX(1);
  }
}

結果

滾動以檢視主體元素的動畫效果。

規範

規範
滾動驅動動畫
# view-timeline-name

瀏覽器相容性

另見