本篇文章咱們來對 CSS 知識作一個總結。以前已經對 CSS 基礎概念 和 CSS 佈局 進行了整理,能夠點擊跳轉查看。接下來,我主要對 CSS 定位、瀏覽器渲染原理以及 CSS 動畫,三部分進行介紹。css
以前已經介紹了佈局,那麼佈局和定位的區別是什麼呢?瀏覽器
定位經過 position 屬性進行建立,一共分爲五個值bash
使用場景以下:佈局
配合 z-index 使用post
默認每個 z-index 爲 auto ,auto 計算出來的值是 0 。flex
使用場景以下:優化
脫離原來的位置,另起一層。好比對話框的關閉按鈕、鼠標提示等。動畫
配合 z-index 使用網站
注意:某些瀏覽器不寫 top / left 會位置錯亂ui
使用場景以下:
配合 z-index 使用
上面定位提到了層疊上下文,那麼什麼是層疊上下文呢?層疊上下文也叫堆疊上下文。
比喻:每個層疊上下文就是一個新的小世界(做用域),這個小世界裏的 z-index 跟外界無關,處在同一個小世界的 z-index 才能比較
那麼哪些不正交屬性能夠建立它?如下這些是比較經常使用的屬性
z-index / flex / opacity / transform
複製代碼
下面咱們來看下 CSS 動畫。
動畫是由許多精緻的畫面(幀)以必定的速度連續播放時,肉眼因視覺慘象產生錯覺,而誤覺得是活動的畫面。
div.remove()
,會觸發當前消失,其餘元素 relayout這裏推薦 CSS Triggers 這個網站,能夠查看每一個屬性出發哪種流程。
四個經常使用功能
注意:這些功能通常都須要配合 transition 過渡。inline 不支持 transform,須要先變成 block
translateX(<length-percentage>)
translateY(<length-percentage>)
translate(<length-percentage>, <length-percentage>?)
translateZ(<length>) 且父容器 perspactive
translate3d(X, Y, Z)
translate(-50%, -50%) 可作絕對定位元素的居中
scaleX(<number>)
scaleY(<number>)
scale(<number>, <number>?)
rotate([<angle> | <zero>])
rotateX([<angle> | <zero>])
,以 X 軸旋轉rotateY([<angle> | <zero>])
,以 Y 軸旋轉rotateZ([<angle> | <zero>])
,以 Z 軸旋轉rotate3d([<angle> | <zero>])
skewX([<angle> | <zero>)
skewY([<angle> | <zeor>)
skew([<angle> | <zeor>], [<angle> | <zero>]?)
經過將以上屬性組合使用,實現一些複雜效果
補充中間幀
注意
並非全部屬性都能過渡
過渡必需要有起始
好比 hover 和 非 hover 就是兩次動畫
若是有中間點,能夠經過下列兩種方法解決
使用兩次 transform
.a === transform ===> .b
.b === transform ===> .c
使用 animation
聲明關鍵幀
添加動畫
@keyframes xxx{
from{
transform: translateX(0%);
}
to{
transform: translateX(100%);
}
}
複製代碼
@keyframes xxx{
0%{
transform: none;
}
66.66%{
transform: translateX(200px);
}
100%{
transform: translateX(200px) translateY(100px);
}
}
複製代碼
animation: 時長 | 過渡方式 | 延遲 | 次數 | 方向 | 填充模式 | 是否暫停 | 動畫名;
CSS 部分的知識整理差很少就先告一段落了,關於 CSS 部分,須要多練習代碼,多看文檔。