view-timeline
view-timeline CSS 簡寫屬性用於定義一個“具名檢視進度時間線”,它根據元素(稱為“主體”)在可滾動元素(“滾動器”)中的可見性變化而進行。view-timeline 設定在主體上。
主體在滾動器中的可見性被跟蹤——預設情況下,當主體首次在滾動器的一端可見時,時間線為 0%,當它到達另一端時為 100%。
view-timeline 可以包含兩個組成值——具名檢視進度時間線的名稱和可選的滾動軸值。然後,該名稱在 animation-timeline 宣告中被引用,以指示將隨時間線進展而動畫化的元素。這可以是主體元素,但也可以不是——您可以在主體在滾動區域中移動時為不同的元素設定動畫。
注意:如果滾動器元素在其軸維度上未溢位其容器,或者溢位被隱藏或剪裁,則不會建立滾動進度時間線。
構成屬性
此屬性是以下 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 如下所示。
<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 元素僅應用了最少的樣式,文字內容則設定了一些基本的字型樣式。
.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 名稱,以宣告這將是隨著檢視進度時間線進展而動畫化的元素。
最後,在元素上指定了一個動畫,該動畫使其不透明度和縮放發生變化,從而在它向上移動捲軸時淡入並變大。
.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 |
瀏覽器相容性
載入中…