關於animation-deplay的一點理解
```
.xx{ position:fixed; left:0;right:0; width:100%;height:100%;background:#ff9966;border:1px solid green;}
.xx::before,.xx:after{
content:;
position:absolute;
left:0;top:0;right:0;bottom:0;margin:auto;
background:#000000;
border-radius:100%;
animation:d 1.6s linear infinite;
width:70px;
height:70px;
}
.xx::after{ animation-delay:0.8s;}
@keyframes d{
0%{width:0;height:0;}
100%{width:70px;height:70px;opacity:0;}
}
<div class="xx"></div>
```
animation-delay 目前是一個實驗中的功能。這個屬性檢索或設置對象動畫的延遲時間,該屬性定義動畫於何時開始,即從動畫應用在元素上到動畫開始的這段時間的長度。默認值為0。
我們期待這樣的效果: .xx:after在最初並不參與動畫,也就是這個圓在1s前不會出現在頁面上。
但實際上,如上代碼,瀏覽器會先渲染出.xx::after的css屬性顯示在頁面,到了delay設置的時間時間時,會進行下一步動畫。也就是動畫最初會顯示一個寬高為70px的黑色圓,1s後黑色圓開始keyframes的動畫。然而這並不是我們期待的效果。
- 解決方法:設置 animation-delay的時間為負值。`.xx::after{ animation-delay:-0.8s;}`。
- 負延遲是有效的。類似於0的延遲,這意味著動畫會立即執行,但是會自動按照延遲的絕對值進行進展。
之後遇到相關animation-delay問題時再做補充。
推薦閱讀:
※CSS要怎麼寫才規範,提高可讀性?
※面對變化莫測的 CSS,我該怎麼辦?
※談談相對定位
※[多行文本] 樣式怎麼沒了?
※全局樣式加 float:left 導致 div{margin:0 auto;} 不起作用,為什麼?
TAG:CSS |