class和id的使用場景
id:適用與指定元素
class:適用與多個有共同樣式的元素
CSS常見選擇器
基礎選擇器
-
*通用選擇器 -
#idid選擇器 -
.classclass選擇器 -
element類選擇器
組合選擇器
-
E,F多元素選擇器,同時匹配元素E或元素F -
E F后代選擇器,匹配E元素的所有后代F -
E>F子元素選擇器,匹配E元素的所有子元素F -
E+F直接相鄰選擇器,匹配E元素之后的相鄰的同級元素F -
E~F普通相鄰選擇器,匹配E元素之后的同級元素F(無論直接相鄰與否)
屬性選擇器
-
E[attr]匹配所有具有屬性attr的元素,div[id]就能取到所有有id屬性的div -
E[attr =value]匹配屬性attr值為value的元素,div[id=test],匹配id=test的div -
E[attr ~=value]匹配所有屬性attr具有多個空格分隔、其中一個值等于value的元素 -
E[attr ^=value]匹配屬性attr的值以value開頭的元素 -
E[attr $=value]匹配屬性attr的值以value結(jié)尾的元素 -
E[attr *=value]匹配屬性attr的值包含value的元素
選擇器的優(yōu)先級計算
簡單場景
- 在屬性后面有
!important時,優(yōu)先級最高 - 作為style屬性寫的內(nèi)聯(lián)樣式
- id選擇器
- 類選擇器
- 偽類選擇器
- 屬性選擇器
- 標簽選擇器
- 通配符選擇器
- 瀏覽器的自定義
復雜選擇器
- 行內(nèi)樣式 ==>a
- ID選擇器 ==>b
- 類、屬性選擇器和偽類選擇器 ==>c
- 標簽選擇器、偽元素 ==>d
從上到下,優(yōu)先度以此降低。
a:link、a:hover、a:active、a:visited的使用順序
a:link{
color: blue;
}
a:visited{
color: red;
}
a:hover{
color: green;
}
a:active{
color: yellow;
}
a首先是一個沒點擊過的鏈接(a:link),當鼠標放在a鏈接上(a:hover),再點擊(a:active),點擊后即為已訪問過的鏈接(a:visited)。
樣式層層覆蓋。
常見的偽類選擇器
-
E:first-child匹配元素E的第一個子元素 -
E:link匹配所有未被點擊過的鏈接E -
E:visited匹配所有已被點擊過的鏈接E -
E:active匹配鼠標已按下且未釋放的E元素 -
E:hover匹配鼠標懸停其上的元素E -
E:focus匹配獲得當前焦點的元素E -
E:lang(c)匹配lang屬性等于c的元素E -
E:enabled匹配表單中可用的元素 -
E:disabled匹配表單中禁用的元素 -
E:cheked匹配表單中被選中的radio或checkbox元素 -
E:selection匹配用戶當前選中的元素 - 更多選擇器
p:first-child和p:first-of-type的作用和區(qū)別
-
p:first-child父元素下第一個且為p的元素
<style>
p:first-child{
color:red;
}
</style>
<div>
<p>第一個元素——p</p> 字體為紅
<div>第二個元素——div</div> 字體為黑
</div>
<div>
<div>第一個元素——div</div> 字體為黑
<p>第二個元素———p</p> 字體為黑
</div>
-
p:first-of-type父元素下第一個p元素
p:first-of-type{
color:red;
}
<div>
<p>第一個元素——p</p> 字體為紅
<div>第二個元素——div</div> 字體為黑
</div>
<div>
<div>第一個元素——div</div> 字體為黑
<p>第二個元素———p</p> 字體為紅
</div>
問題1
#header{
}/*id為header的元素*/
.header{
}/*class為header的元素*/
.header .logo{
}/*后代選擇器,class為header下所有class為logo的元素*/
.header.mobile{
}/*class為header和mobile的元素*/
.header p, .header h3{
}/*class為header下所有p和h3元素*/
#header .nav>li{
}/*id為header下所有class為nav的元素下所有l(wèi)i元素*/
#header a:hover{
}/*id為header下所有鼠標在其上方的a元素*/
#header .logo~p{
}/*id為header下所有class為logo后所有同級的p元素*/
#header input[type="text"]{
}/*id為header下所有input標簽中有type屬性為text的元素*/
問題2
<style>
.item1:first-child{
color: red;
}
.item1:first-of-type{
background: blue;
}
</style>
<div class="ct">
<p class="item1">aa</p>/*該元素即是.ct中第一個元素,也是.ct中第一個p元素,所以它即是紅字也是藍背景*/
<h3 class="item1">bb</h3>/*該元素是.cd中的第二個元素,但是卻是第一個h3元素,所以它僅是背景為藍色*/
<h3 class="item1">ccc</h3>/*該元素是.cd中的第三個元素,也是第二個h3元素,所以它的樣式是瀏覽器的默認樣式*/
</div>