1. class 和 id 的使用場(chǎng)景?
對(duì)于需要應(yīng)用同一種樣式的不同元素可以使用同一個(gè) class镜撩,而 id 在一個(gè)HTML文件中是唯一的。
2. CSS選擇器常見的有幾種?
1.基礎(chǔ)選擇器
*: 通用元素選擇器
#id: id選擇器
.class:類選擇器
element: 標(biāo)簽選擇器
2.組合選擇器
E,F: 多元素選擇器勺良,用,分隔,同時(shí)匹配元素E或元素F
E F: 后代選擇器,用空格分隔椿访,匹配E元素所有的后代元素F
E>F: 子元素選擇器漓拾,匹配E元素的所有直接元素
E+F: 直接相鄰選擇器阁最,匹配E元素之后的相鄰的同級(jí)元素F
E~F: 普通相鄰選擇器,匹配E元素之后的同級(jí)元素F(無論直接相鄰與否)
3.屬性選擇器
E[attr]:匹配所有具有屬性attr的元素
E[attr=value]:匹配屬性值為value的元素
E[attr~=value]:匹配所有屬性attr具有多個(gè)空格分隔骇两,其中一個(gè)值等于value的元素
E[attr^=value]:匹配屬性attr的值以value開頭的元素
E[attr$=value]:匹配屬性attr的值以value結(jié)尾的元素
E[attr*=value]:p匹配屬性attr的值包含value的元素
4.偽類選擇器
E:first-child:匹配元素E的第一個(gè)子元素
E:link :匹配素有未被點(diǎn)擊的鏈接
E:visited :匹配所有已經(jīng)被點(diǎn)擊的鏈接
E:active :匹配鼠標(biāo)已經(jīng)在其上按下速种,但是還沒有釋放的E元素
E:hover :匹配鼠標(biāo)懸停其上的E元素
E:focus :匹配獲得當(dāng)前焦點(diǎn)的E元素
E:lang(c) :匹配lang屬性等于c的元素
E:enabled :匹配表單中可用的元素
Edisabled :匹配表單中禁用的元素
E:checked: 匹配表單中被選中的radio或checkbox元素
E:selection: 匹配用戶當(dāng)前選中的元素
E:root :匹配文檔的根元素,對(duì)于HTML文檔低千,就是HTML元素
E:nth-child(n) :匹配其父元素的第n個(gè)子元素配阵,第一個(gè)編號(hào)為1
E:nth-last-child :匹配其父元素的第n個(gè)子元素,第一個(gè)編號(hào)為1
E:nth-of-type(n):與:nth-child作用類似示血,但是僅匹配使用同種標(biāo)簽的元素
E:nth-last-of-type(n) :與nth-last-child作用相似棋傍,但是僅匹配使用同種標(biāo)簽的元素
E:first-child:匹配父元素的第一個(gè)子元素
E:last-child :匹配父元素的最后一個(gè)子元素
E:first-of-type :即 E:nth-of-type(1)
E:last-of-type :即 E:nth-last-of-type(1)
E:only-child :匹配父元素下僅有的一個(gè)子元素
E:only-of-type :匹配父元素下使用同種標(biāo)簽的唯一一個(gè)子元素
5.偽元素選擇器
E::first-line :匹配E元素內(nèi)容的第一行
E::first-letter :匹配E元素內(nèi)容的第一個(gè)字母
E::before :在E元素之前插入生成的內(nèi)容
E::after :在E元素之后插入生成的內(nèi)容
3. 選擇器的優(yōu)先級(jí)是怎樣的?對(duì)于復(fù)雜場(chǎng)景如何計(jì)算優(yōu)先級(jí)?
!important > 內(nèi)聯(lián)樣式的> #id > .class > 偽類 > 屬性選擇器 > 標(biāo)簽 >通配選擇器* > 瀏覽器給的默認(rèn)樣式
一個(gè) 內(nèi)聯(lián)樣式=1000难审,
一個(gè) #id=100瘫拣,
一個(gè) 類、偽類告喊、屬性選擇器 =10麸拄,
一個(gè) 標(biāo)簽、為元素選擇器=1
和值越大葱绒,優(yōu)先級(jí)越高感帅。
a:link, a:hover, a:active, a:visited 的順序是怎樣的? 為什么地淀?
這四個(gè)選擇器優(yōu)先級(jí)相同失球,順序靠后的會(huì)覆蓋前面的。
a:active放在最后,不被任何覆蓋实苞,保證只要a處于這個(gè)狀態(tài)就會(huì)顯示
a:visited放在a:link之后豺撑,可以區(qū)別這個(gè)a是否被點(diǎn)擊過
a:hover放在a:visited之后,否則在a被點(diǎn)擊過后黔牵,hover狀態(tài)將不能顯示
所以順序是:a:link, a:visited, a:hover, a:active
4. 以下選擇器分別是什么意思?
#header{ 選擇id為header的那個(gè)元素
}
.header{ 選擇所有類名為 header的元素
}
.header .logo{ 選擇類名為header的元素 的類名為logo的子元素
}
.header.mobile{ 選擇類名包含header 和mobile的元素
}
.header p, .header h3{ 選擇類名為header的元素的所有 p 子元素和所有 h3子元素
}
#header .nav>li{ 選擇id為header的元素的 類名為nav的子元素的 直接子元素li
}
#header a:hover{ 選擇id為header的元素的 所有處于hover狀態(tài)的a元素
}
#header .logo~p{ 選擇id為header的元素的 類名為logo的子元素之后的 所有同級(jí)p元素
}
#header input[type="text"]{選擇id為header的元素的 type屬性為text的input子元素
}
5. 列出你知道的偽類選擇器
見2.4
6. div:first-child聪轿、div:first-of-type、div :first-child和div :first-of-type的作用和區(qū)別 (注意空格的作用)
不加空格是同級(jí) 加了空格的是后代
div:first-child: 選擇這個(gè)div的父元素的 第一個(gè)div子元素
div:first-of-type: 選擇這個(gè)div的父元素的 的第一個(gè)div子元素
div :first-child: 選擇這個(gè)div的 子元素的父元素的第一個(gè)子元素 也就是這個(gè)div的第一個(gè)子元素
div :first-of-type: 選擇這個(gè)div的第一個(gè)div子元素
7. 運(yùn)行如下代碼猾浦,解析下輸出樣式的原因陆错。
<style>
.item1:first-child{
color: red;
}
.item1:first-of-type{
background: blue;
}
</style>
<div class="ct">
<p class="item1">aa</p>
<h3 class="item1">bb</h3>
<h3 class="item1">ccc</h3>
</div>
.item1:first-child 因?yàn)?個(gè)類名為item1的元素是同級(jí)元素,所以父元素都是這個(gè)div金赦,div的第一個(gè)類名為item1的子元素就是 <p class="item1">aa</p>音瓷,所以aa顯示為紅色。
.item1:first-of-type 選擇了item1們的父元素的每個(gè)不同類型的類名為item1的第一個(gè)子元素夹抗,即第一個(gè)p元素和第一個(gè)h3元素绳慎,所以aa和bb的背景顏色顯示為藍(lán)色。