主要內容:web
瀏覽器支持程度差,須要添加私有前綴chrome
類選擇器、屬性選擇器、僞類選擇器,權重爲 10
代碼演示瀏覽器
button { cursor: pointer; } button[disabled] { cursor: default }
input[type=search] { color: skyblue; } span[class^=black] { color: lightgreen; } span[class$=black] { color: lightsalmon; } span[class*=black] { color: lightseagreen; }
代碼演示dom
ul li:first-child { background-color: lightseagreen; } ul li:last-child { background-color: lightcoral; } ul li:nth-child(3) { background-color: aqua; }
even
偶數、odd
奇數
代碼演示動畫
<style> /* 偶數 */ ul li:nth-child(even) { background-color: aquamarine; } /* 奇數 */ ul li:nth-child(odd) { background-color: blueviolet; } /*n 是公式,從 0 開始計算 */ ul li:nth-child(n) { background-color: lightcoral; } /* 偶數 */ ul li:nth-child(2n) { background-color: lightskyblue; } /* 奇數 */ ul li:nth-child(2n + 1) { background-color: lightsalmon; } /* 選擇第 0 5 10 15, 應該怎麼選 */ ul li:nth-child(5n) { background-color: orangered; } /* n + 5 就是從第5個開始日後選擇 */ ul li:nth-child(n + 5) { background-color: peru; } /* -n + 5 前五個 */ ul li:nth-child(-n + 5) { background-color: tan; } </style>
nth-child
和 nt-of-type
的區別nth-child
選擇父元素裏面的第幾個子元素,不論是第幾個類型nt-of-type
選擇指定類型的元素代碼演示spa
<style> div :nth-child(1) { background-color: lightblue; } div :nth-child(2) { background-color: lightpink; } div span:nth-of-type(2) { background-color: lightseagreen; } div span:nth-of-type(3) { background-color: #fff; } </style>
content
屬性行內元素
。看不見剛纔建立的元素
,因此咱們稱爲僞元素權重爲 1
代碼演示firefox
<style> div { width: 100px; height: 100px; border: 1px solid lightcoral; } div::after, div::before { width: 20px; height: 50px; text-align: center; display: inline-block; } div::after { content: '德'; background-color: lightskyblue; } div::before { content: '道'; background-color: mediumaquamarine; } </style>
父元素添加 overfloat:hidden
3d
使用::after僞元素清除浮動code
.box::after{ content:""; display:block; clear:both; visibility:hidden; } <div class=box> <div class\="big"\>big</div\> <div class\="small"\>small</div\> <!--<div class="clear">額外標籤法</div>--> </div>
.box{ *zoom:1; }
.box:after,.box:before{ content: ""; display: table; } .box:after{ clear: both; } .box{ *zoom: 1; }
轉換(transform)是CSS3中具備顛覆性的特徵之一,能夠實現元素的位移、旋轉、變形、縮放。orm
2D移動是2D轉換裏面的一種功能,能夠改變元素在頁面中的位置,相似定位。
transform: translate(x,y); transform: translateX(n); transform: translateY(n);
不會影響到其餘元素的位置
行內標籤
沒有效果div { background-color: lightseagreen; width: 200px; height: 100px; /* 平移 */ /* 水平垂直移動 100px */ /* transform: translate(100px, 100px); */ /* 水平移動 100px */ /* transform: translate(100px, 0) */ /* 垂直移動 100px */ /* transform: translate(0, 100px) */ /* 水平移動 100px */ /* transform: translateX(100px); */ /* 垂直移動 100px */ transform: translateY(100px) }
2D旋轉指的是讓元素在2維平面內順時針旋轉或者逆時針旋轉。
transform:rotate(angle)
rotate
裏面跟度數,單位是 deg
img:hover { transform: rotate(360deg) }
縮放,顧名思義,能夠放大和縮小。 只要給元素添加上了這個屬性就能控制它放大仍是縮小。
transform:scale(x,y);
* 動畫是 `CSS3` 中最具顛覆性的特徵之一,可經過設置多個節點來精確的控制一個或者一組動畫,從而實現複雜的動畫效果
* 先定義動畫 * 在調用定義好的動畫
@keyframes 動畫名稱 { 0% { width: 100px; } 100% { width: 200px } }
div { /\* 調用動畫 \*/ animation-name: 動畫名稱; /\* 持續時間 \*/ animation-duration: 持續時間; }
* 0% 是動畫的開始,100 % 是動畫的完成,這樣的規則就是動畫序列 * 在 @keyframs 中規定某項 CSS 樣式,就由建立當前樣式逐漸改成新樣式的動畫效果 * 動畫是使元素從一個樣式逐漸變化爲另外一個樣式的效果,能夠改變任意多的樣式任意多的次數 * 用百分比來規定變化發生的時間,或用 `from` 和 `to`,等同於 0% 和 100%
<style\> div { width: 100px; height: 100px; background-color: aquamarine; animation-name: move; animation-duration: 0.5s; } @keyframes move{ 0% { transform: translate(0px) } 100% { transform: translate(500px, 0) } } </style\>
div { width: 100px; height: 100px; background-color: aquamarine; /\* 動畫名稱 \*/ animation-name: move; /\* 動畫花費時長 \*/ animation-duration: 2s; /\* 動畫速度曲線 \*/ animation-timing-function: ease-in-out; /\* 動畫等待多長時間執行 \*/ animation-delay: 2s; /\* 規定動畫播放次數 infinite: 無限循環 \*/ animation-iteration-count: infinite; /\* 是否逆行播放 \*/ animation-direction: alternate; /\* 動畫結束以後的狀態 \*/ animation-fill-mode: forwards; } div:hover { /\* 規定動畫是否暫停或者播放 \*/ animation-play-state: paused; }
/\* animation: 動畫名稱 持續時間 運動曲線 什麼時候開始 播放次數 是否反方向 起始與結束狀態 \*/ animation: name duration timing-function delay iteration-count direction fill-mode
animation-paly-state
animation-paly-state: paused
; 常常和鼠標通過等其餘配合使用animation-direction: alternate
animation-fill-mode: forwards
animation: move 2s linear 1s infinite alternate forwards;
animation-timing-function
: 規定動畫的速度曲線,默認是ease
3D
轉換特色
3D
轉換3D
轉換知識要點3D
位移:translate3d(x, y, z)
3D
旋轉:rotate3d(x, y, z)
perspctive
3D
呈現 transfrom-style
3D
移動 translate3d
3D
移動就是在 2D
移動的基礎上多加了一個能夠移動的方向,就是 z 軸方向transform: translateX(100px)
:僅僅是在 x 軸上移動transform: translateY(100px)
:僅僅是在 y 軸上移transform: translateZ(100px)
:僅僅是在 z 軸上移動transform: translate3d(x, y, z)
:其中x、y、z 分別指要移動的軸的方向的距離
transform: translate3d(x, y, z)
transform: translate3d(100px, 100px, 100px) /\* 注意:x, y, z 對應的值不能省略,不須要填寫用 0 進行填充 \*/ transform: translate3d(100px, 100px, 0)
perspective
3D
效果須要透視(理解成 3D
物體投影的 2D
平面上)注意下方圖片
body { perspective: 1000px; }
translateZ
translateZ
與 perspecitve
的區別perspecitve
給父級進行設置,translateZ
給 子元素進行設置不一樣的大小3D
旋轉rotateX
3D 旋轉指可讓元素在三維平面內沿着 x 軸、y 軸、z 軸 或者自定義軸進行旋轉
transform: rotateX(45deg)
-- 沿着 x 軸正方向旋轉 45 度transform: rotateY(45deg)
-- 沿着 y 軸正方向旋轉 45 度transform: rotateZ(45deg)
-- 沿着 z 軸正方向旋轉 45 度transform: rotate3d(x, y, z, 45deg)
-- 沿着自定義軸旋轉 45 deg 爲角度div { perspective: 300px; } img { display: block; margin: 100px auto; transition: all 1s; } img:hover { transform: rotateX(\-45deg) }
3D
旋轉 rotateY
div { perspective: 500px; } img { display: block; margin: 100px auto; transition: all 1s; } img:hover { transform: rotateY(180deg) }
左手準則
3D
旋轉 rotateZ
div { perspective: 500px; } img { display: block; margin: 100px auto; transition: all 1s; } img:hover { transform: rotateZ(180deg) }
rotate3d
transform: rotate3d(x, y, z, deg)
-- 沿着自定義軸旋轉 deg 爲角度x, y, z 表示旋轉軸的矢量,是標識你是否但願沿着該軸進行旋轉,最後一個標識旋轉的角度
transform: rotate3d(1, 1, 0, 180deg)
-- 沿着對角線旋轉 45degtransform: rotate3d(1, 0, 0, 180deg)
-- 沿着 x 軸旋轉 45degdiv { perspective: 500px; } img { display: block; margin: 100px auto; transition: all 1s; } img:hover { transform: rotate3d(1, 1, 0, 180deg) }
3D
呈現 transform-style
transform-style
transform-style: flat
表明子元素不開啓 3D
立體空間,默認的transform-style: preserve-3d
子元素開啓立體空間瀏覽器私有前綴是爲了兼容老版本的寫法,比較新版本的瀏覽器無須添加。
私有前綴
\-moz-border-radius: 10px; \-webkit-border-radius: 10px; \-o-border-radius: 10px; border-radius: 10px;