CSS3現狀,新增選擇器,2D、3D轉換,動畫等知識詳解

目錄

1. css3現狀

2. 屬性選擇器

3. 結構僞類選擇器 

4. 僞元素選擇器

5. 2D轉換

5.1 二維座標系

5.2 2D轉換之移動translate

5.3 2D轉換之旋轉rotate

5.4 2D轉換的中心點

5.5 2D轉換之縮放scale

5.6 2D轉換綜合寫法

6. 動畫

6.1 動畫的基本使用

6.2 動畫常用屬性

6.3 動畫簡寫屬性

6.4 速度曲線細節

7.  CSS3  3D轉換

7.1 三維座標系

7.2 3D移動translate3d

7.3 透視 perspective

7.4 translateZ

7.5 3D旋轉rotate3d

7.6 3D呈現transform-style

8. 瀏覽器私有前綴

8.1 私有前綴

8.2 提倡的寫法


1. css3現狀

*  在css2的基礎上新增(擴展)樣式

*  移動端支持優於PC端

*  不斷改進且應用相對廣泛

2. 屬性選擇器

選擇符 簡介
E[att] 選擇具有att屬性的元素
E[att="val"] 選擇具有att屬性且屬性值等於val的E元素
E[att^="val"] 匹配具有att屬性、且值以val開頭的E元素
E[att$="val"] 匹配具有att屬性、且值以val結尾的E元素
E[att*="val"] 匹配具有att屬性、且值中含有val的E元素

類選擇器、屬性選擇器、僞類選擇器,權重爲 10

3. 結構僞類選擇器 

選擇符 簡介
E:first-child 匹配父元素中的第一個子元素E
E:last-child 匹配父元素中最後一個E元素
E:nth-child(n) 匹配父元素中的第n個子元素E
E:first-of-child 指定類型E的第一個
E:last-of-child 指定類型E的最後一個
E:nth-of-type 指定類型E的第n個

nth-child(n)

* n可以是數字、關鍵字和公式

* n如果是數字,就是選擇第幾個

* 常見的關鍵詞有even偶數、odd奇數

* 常見的公式如下(如果n是公式,則從0開始計算)

* 第0個元素或者超出了元素的個數會被忽略

n爲公式
公式 取值
2n 偶數(2*0,2*1,……)
2n+1 奇數(2*0+1,2*1+1,……)
5n 5,10,15,……
n+5

從第5個開始(包含第五個)到最後

-n+5 前五個(包含第五個)

4. 僞元素選擇器

選擇符 簡介
::before 在元素內部的前面插入內容
::after 在元素內部的後面插入內容

* before和after必須有content屬性

* before在內容的前面,after在內容的後面

* before和after創建一個元素,但是屬於行內元素

* 因爲在dom裏面看不見剛纔創建的元素,所以我們稱爲僞元素

* 僞元素和標籤選擇器一樣,權重爲1

5. 2D轉換

轉換(transform)是css3中具有顛覆性的特徵之一,可以實現元素的位移、旋轉、縮放等效果。

轉換可以簡單理解爲變形

* 移動  translate

* 旋轉 rotate

* 縮放 scale

5.1 二維座標系

左上角爲原點

水平向右爲 x軸

垂直向下爲 y軸

5.2 2D轉換之移動translate

2D移動是2D轉換裏面的一種功能,可以改變元素在頁面中的位置,類似定位

1.語法

transform:translate(X,y)
/* 或者分開寫 */
transform:translateX(n)
transform:translateY(n)

2.重點

* 定義2D轉換中的移動,沿着X軸和Y軸移動元素

* translate最大的有點:不會影響到其他元素的位置

* translate中的百分比單位是相對於自身元素的translate:(50%,50%);

* 對行內標籤沒有效果

5.3 2D轉換之旋轉rotate

2D旋轉指的是讓元素在2維平面內順時針 旋轉或者逆時針旋轉

1. 語法

transform:rotate(度數)

2. 重點

* rotate 裏面跟度數,單位是deg,比如rotate(45deg)

* 角度爲正時,順時針,爲負時,逆時針

* 默認旋轉的中心點是元素的中心點

5.4 2D轉換的中心點

可以通過transform-origin 來設置元素轉換的中心點

transform-origin:x y;

* 後面的參數x和y用空格隔開

* x y 默認轉換的中心點是元素的中心點(50% 50%)

* 還可以給x y設置 像素 或者方位名詞 (top,bottom.left,right,center)

5.5 2D轉換之縮放scale

縮放,顧名思義,可以放大縮小,只要給元素添加上了這個屬性就能控制它放大還是縮小

1. 語法

transform:scale(x,y)

2. 注意

* 注意其中的x和y用逗號分隔

* transform:scale(1,1) 寬和高都放大一倍,相當於沒有放大

* transform:scale(2,2) 寬和高都放大了2倍

* transform:scale(2) 只寫一個參數,,第一個參數則和第一個參數一樣,相當於scale(2,2)

* transform:scale(0.5,0.5) 縮小

* scale 縮放最大的優勢:可以設置轉換中心點縮放,默認是以中心點縮放的,而且不影響其他盒子

5.6 2D轉換綜合寫法

* 同時使用多個轉化,格式爲:transfrom:translate() rotate() scale() ……等。

* 其順序會影響轉換的效果(先旋轉的化會改變座標軸方向)

* 當我們 同時有位移和其他屬性的時候,記得要將位移放到最前

6. 動畫

* 動畫(animation)是css3中具有顛覆性的特徵之一,可通過設置多個節點來精確控制一個或一組動畫,常用來實現複雜的動畫效果,

* 相比較過渡,動畫可以實現更多變化,更多控制,連續自動播放等效果

6.1 動畫的基本使用

製作動畫分爲兩步:

1. 先定義動畫

2. 再使用(調用)動畫

1. 用keyframes定義動畫(類似定義類選擇器)

/* 定義動畫 */
@keyframes 動畫名稱{
    0%{

        width:100px;
    }
    10%{

    }
    20%{}
   
    100%{
        
        width:200px;
    }    
}

動畫序列

* 0%是動畫開始,100%是動畫的完成,這樣的規則就是動畫序列

* 在@keyframes中規定某項css樣式,就能創建由當前樣式逐漸改爲新樣式的動畫效果。

* 動畫是使元素從一種樣式逐漸變化爲另一種樣式的效果,您可以改變任意多的樣式任意多的次數

* 請用百分比來規定變化發生的事件,或用關鍵 詞 from 和 to , 等同於0% 和 100% 

2. 元素使用動畫

div{

    width:200px;
    height:200px;
    background-color:aqua;
    /* 調用動畫 */
    animation-name:動畫名稱;
    /* 動畫持續時間  */
    animation-duration:持續時間;

}

6.2 動畫常用屬性

屬性 描述
@keyframes 規定動畫
animation 所有動畫屬性的簡寫屬性,除了animation-play-state屬性
animation-name 規定@keyframes動畫的名稱
animation-duration 規定動畫完成一個週期所花費的秒或毫秒,默認是0
animation-timing-function

規定動畫的速度曲線,默認是“ease”

animation-delay 規定動畫何時開始,默認是0
animation-iteration-count 規定動畫被播放的次數,默認是1,還有infinite
animation-direction 規定動畫是否在下一個週期逆向播放,默認是“normal".alternate逆播放
animation-play-state 規定動畫是否正在運行或暫停,默認是”running"。還有“paused"
animation-fill-mode 規定動畫結束後狀態,保持forwards, 回到起始backwards

6.3 動畫簡寫屬性

animation:動畫名稱 持續時間 運動曲線 何時開始 播放次數 是否反方向 動畫起始或則和結束的狀態;

animation:myfirst 5s linear 2s infinite alternate;

* 簡寫屬性裏面不包含animation-play-state

* 暫停動畫: animation-play-state:paused;經常和鼠標經過等其他配合使用

* 想要動畫走回來:而不是直接調回來,animation-direction:alternate

* 盒子動畫結束後,停在結束位置, animation-fill-mode:forwards

6.4 速度曲線細節

animation-timing-function:規定動畫的速度曲線,默認是"ease"

描述
linear 動畫從頭到尾的速度是相同的,勻速
ease 默認,低速開始,然後加快,結束前變慢
ease-in 以低速開始
ease-out 低速結束
ease-in-out 低速開始和結束
steps() 指定了時間函數中的間隔數量(步長),分幾步完成動畫,效果就是一步步往前跳

給同一個元素使用多個動畫時,用逗號做分隔

animation:name1  1s step(10) infinite, name2 2s linear infinite;

7.  CSS3  3D轉換

* 生活的環境就是3D的,照片就是3D物體在2D平面呈現的例子

特點: 

* 近大遠小

* 物體後面遮擋不可見

7.1 三維座標系

三維座標系其實就是立體空間,立體空間是由3個軸共同組成的

* x軸  水平向右    x右邊是正值,左邊是負值

* y軸  垂直向下   y下面是正值,上面是負值

* z軸  垂直屏幕   往外面是正值,往裏面是負值

7.2 3D移動translate3d

3D移動在2D移動的基礎上多加了一個可以移動的方向,就是z軸方向

/* x軸移動 */

transform:translateX(100px)  

/* y軸移動 */

transform:translateY(100px)

/* z軸移動 */

transform:translateZ(100px)

/* 往x,y,z三個方向移動距離x,y,z */

transform:translate3d(x,y,z)

7.3 透視 perspective

在2D平面產生近大遠小的視覺立體,但是隻要效果二維的

* 如果想要在網頁產生3D效果需要透視(理解成3D物體投影在2D平面內)

* 模擬人類的視覺位置,可認爲安排一隻眼睛去看

* 透視我們也稱爲視距,視距就是人的眼睛到屏幕的距離

* 距離視覺點越近的在電腦平面成像越大,越遠成像越小

* 透視的單位是像素

透視寫在被觀察元素的父盒子上面

7.4 translateZ

transform:translateZ(100px) :僅僅是在Z軸上移動,

有了透視,就能看到translateZ引起的變化了

7.5 3D旋轉rotate3d

3D旋轉指可以讓元素在三維平面內沿着X軸,Y軸,Z軸或者自定義軸進行旋轉。

/* 沿着x軸正方向旋轉45度 */
transform:rotateX(45deg)

/* 沿着y軸正方向旋轉45度 */
transform:rotateY(45deg)

/* 沿着z軸正方向旋轉45度 */
transform:rotateZ(45deg)

/* 沿着自定義軸旋轉  deg爲角度 */
transform:rotate3d(x,y,z,45deg)

元素旋轉的方向, 遵循左手法則

*  左手的手拇指指向x軸的正方向

* 其餘手指的彎曲方向就是該元素沿着x軸旋轉的方向

transform:rotate3d(x,y,z,deg)

xyz是表示旋轉軸的矢量,是標示你是否希望沿着該軸旋轉,最後一個標示旋轉的角度

 * transform:rotate(1,0,0,45deg) 沿着x軸旋轉45deg

*  transfom:rotate3d(1,1,0,45deg) 沿着對角線旋轉45deg

7.6 3D呈現transform-style

* 控制子元素是否開啓三維立體環境

* transform-style:flat  子元素不開啓3d立體空間 默認的

* transform-style:preserve-3d  字元素開啓立體空間

* 代碼寫給父級, 但是影響的是子盒子

 

8. 瀏覽器私有前綴

瀏覽器私有前綴是爲了兼容老版本的寫法,比較新版本的瀏覽器無須添加。

8.1 私有前綴

* -moz-: 代表firefox瀏覽器私有屬性

* -ms-: 代表ie瀏覽器私有屬性

* -webkit-:代表safari、chrome私有屬性

* -o-:代表Opera私有屬性

8.2 提倡的寫法

-moz-border-radius:10px;
-webkit-border-radius:10px;
-o-border-radius:10px;
border-radius:10px;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章