view-timeline

可用性有限

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

view-timeline CSS 簡寫屬性用於定義一個“具名檢視進度時間線”,它根據元素(稱為“主體”)在可滾動元素(“滾動器”)中的可見性變化而進行。view-timeline 設定在主體上。

主體在滾動器中的可見性被跟蹤——預設情況下,當主體首次在滾動器的一端可見時,時間線為 0%,當它到達另一端時為 100%。

view-timeline 可以包含兩個組成值——具名檢視進度時間線的名稱和可選的滾動軸值。然後,該名稱在 animation-timeline 宣告中被引用,以指示將隨時間線進展而動畫化的元素。這可以是主體元素,但也可以不是——您可以在主體在滾動區域中移動時為不同的元素設定動畫。

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

構成屬性

此屬性是以下 CSS 屬性的簡寫:

語法

css
/* three values: one each for view-timeline-name, view-timeline-inset and view-timeline-axis */
view-timeline: --custom_name_for_timeline block auto;
view-timeline: --custom_name_for_timeline block 20% 200px;

/* two values: one each for view-timeline-name and view-timeline-axis */
view-timeline: --custom_name_for_timeline block;
view-timeline: --custom_name_for_timeline inline;
view-timeline: --custom_name_for_timeline y;
view-timeline: --custom_name_for_timeline x;
view-timeline: none block;
view-timeline: none inline;
view-timeline: none y;
view-timeline: none x;

/* one value: view-timeline-name */
view-timeline: none;
view-timeline: --custom_name_for_timeline;

view-timeline 簡寫屬性可以作為 <view-timeline-name><view-timeline-inset><view-timeline-axis> 值的組合應用於容器元素。必須至少指定一個值。如果同時指定了兩個值,則遵循的順序必須是 <view-timeline-name> 值,然後是 <view-timeline-axis> 值和/或 <view-timeline-inset> 值。

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

<view-timeline-name>

參閱 view-timeline-name。預設值為 none

<view-timeline-inset>

參閱 view-timeline-inset。預設值為 auto

<view-timeline-axis>

參閱 view-timeline-axis。預設值為 block

正式定義

初始值作為簡寫中的每個屬性
應用於所有元素
繼承性
計算值作為簡寫中的每個屬性
動畫型別作為簡寫中的每個屬性

正式語法

view-timeline = 
[ <'view-timeline-name'> [ <'view-timeline-axis'> || <'view-timeline-inset'> ]? ]#

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

<view-timeline-axis> =
[ block | inline | x | y ]#

<view-timeline-inset> =
[ [ auto | <length-percentage> ]{1,2} ]#

<length-percentage> =
<length> |
<percentage>

示例

建立具名檢視進度時間線

具名檢視進度時間線 --subject-reveal 使用 view-timeline 屬性在具有 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 以定義具名檢視進度時間線。它還被賦予一個具有相同值的 animation-timeline 名稱,以宣告這將是隨著檢視進度時間線進展而動畫化的元素。

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

css
.animation {
  view-timeline: --subject-reveal block;
  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-shorthand

瀏覽器相容性

另見