1.class 和 id 的使用場(chǎng)景?
- id:id選擇器衙四,使用#name定義(name為id名,可任意取名),使用id="name"調(diào)用遣妥,其優(yōu)先級(jí)高于類(lèi)選擇器,一個(gè)標(biāo)簽只能有一個(gè)id且每個(gè)id只能使用一次攀细,多用于頁(yè)面分塊的塊級(jí)標(biāo)簽上箫踩;
- class:類(lèi)選擇器,使用.name定義(name為類(lèi)名谭贪,可任意取名)境钟,使用class="name"調(diào)用,一個(gè)標(biāo)簽可以有多個(gè)類(lèi)且同一個(gè)類(lèi)可以用到不同的標(biāo)簽上俭识,多用于多個(gè)標(biāo)簽樣式相似或完全相同時(shí)慨削。
2.CSS選擇器常見(jiàn)的有幾種?
- 基礎(chǔ)選擇器
- 組合選擇器
- 屬性選擇器
- 偽類(lèi)選擇器
- 偽元素選擇器
選擇器 |
含義 |
* |
通用元素選擇器,匹配頁(yè)面任何元素(這也就決定了我們很少使用) |
#id |
id選擇器套媚,匹配特定id的元素 |
.class |
類(lèi)選擇器缚态,匹配class包含(不是等于)特定類(lèi)的元素 |
element |
標(biāo)簽選擇器 |
選擇器 |
含義 |
E,F |
多元素選擇器,用,分隔堤瘤,同時(shí)匹配元素E或元素F |
E F |
后代選擇器玫芦,用空格分隔,匹配E元素所有的后代元素F |
E>F |
子元素選擇器本辐,用>分隔姨俩,匹配E元素的所有直接子元素 |
E+F |
直接相鄰選擇器蘸拔,匹配E元素之后的相鄰的同級(jí)元素F |
E~F |
普通相鄰選擇器(弟弟選擇器),匹配E元素之后的同級(jí)元素F(無(wú)論直接相鄰與否) |
.class1.class2 |
id和class選擇器和選擇器連寫(xiě)的時(shí)候中間沒(méi)有分隔符环葵,. 和 # 本身充當(dāng)分隔符的元素 |
element#id |
id和class選擇器和選擇器連寫(xiě)的時(shí)候中間沒(méi)有分隔符调窍,. 和 # 本身充當(dāng)分隔符的元素 |
選擇器 |
含義 |
E[attr] |
匹配所有具有屬性attr的元素,div[id]就能取到所有有id屬性的div |
E[attr = value] |
匹配屬性attr值為value的元素张遭,div[id=test],匹配id=test的div |
E[attr ~= value] |
匹配所有屬性attr具有多個(gè)空格分隔邓萨、其中一個(gè)值等于value的元素 |
E[attr ^= value] |
匹配屬性attr的值以value開(kāi)頭的元素 |
E[attr $= value] |
匹配屬性attr的值以value結(jié)尾的元素 |
E[attr *= value] |
匹配屬性attr的值包含value的元素 |
選擇器 |
含義 |
E:first-child |
匹配元素E的第一個(gè)子元素 |
E:link |
匹配所有未被點(diǎn)擊的鏈接 |
E:visited |
匹配所有已被點(diǎn)擊的鏈接 |
E:active |
匹配鼠標(biāo)已經(jīng)其上按下、還沒(méi)有釋放的E元素 |
E:hover |
匹配鼠標(biāo)懸停其上的E元素 |
E:focus |
匹配獲得當(dāng)前焦點(diǎn)的E元素 |
E:lang(c) |
匹配lang屬性等于c的E元素 |
E:enabled |
匹配表單中可用的元素 |
E:disabled |
匹配表單中禁用的元素 |
E:checked |
匹配表單中被選中的radio或checkbox元素 |
E::selection |
匹配用戶(hù)當(dāng)前選中的元素 |
選擇器 |
含義 |
E:root |
匹配文檔的根元素菊卷,對(duì)于HTML文檔缔恳,就是HTML元素 |
E:nth-child(n) |
匹配其父元素的第n個(gè)子元素,第一個(gè)編號(hào)為1 |
E:nth-last-child(n) |
匹配其父元素的倒數(shù)第n個(gè)子元素洁闰,第一個(gè)編號(hào)為1 |
E:nth-of-type(n) |
與:nth-child()作用類(lèi)似歉甚,但是僅匹配使用同種標(biāo)簽的元素 |
E:nth-last-of-type(n) |
與:nth-last-child() 作用類(lèi)似,但是僅匹配使用同種標(biāo)簽的元素 |
E:last-child |
匹配父元素的最后一個(gè)子元素扑眉,等同于:nth-last-child(1) |
E:first-of-type |
匹配父元素下使用同種標(biāo)簽的第一個(gè)子元素纸泄,等同于:nth-of-type(1) |
E:last-of-type |
匹配父元素下使用同種標(biāo)簽的最后一個(gè)子元素,等同于:nth-last-of-type(1) |
E:only-child |
匹配父元素下僅有的一個(gè)子元素腰素,等同于:first-child:last-child或 :nth-child(1):nth-last-child(1) |
E:only-of-type |
匹配父元素下使用同種標(biāo)簽的唯一一個(gè)子元素聘裁,等同于:first-of-type:last-of-type或 :nth-of-type(1):nth-last-of-type(1) |
E:empty |
匹配一個(gè)不包含任何子元素的元素,文本節(jié)點(diǎn)也被看作子元素 |
E:not(selector) |
匹配不符合當(dāng)前選擇器的任何元素 |
選擇器 |
含義 |
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í)弓千?
CSS優(yōu)先級(jí):
從高到低分別是:
- 在屬性后面使用 !important 會(huì)覆蓋頁(yè)面內(nèi)任何位置定義的元素樣式
- 作為style屬性寫(xiě)在元素標(biāo)簽上的內(nèi)聯(lián)樣式
- id選擇器
- 類(lèi)選擇器
- 偽類(lèi)選擇器
- 屬性選擇器
- 標(biāo)簽選擇器
- 通配符選擇器
- 瀏覽器自定義
- 根據(jù)組合選擇器按照以下規(guī)則統(tǒng)計(jì)各類(lèi)選擇器的個(gè)數(shù):
- 行內(nèi)樣式 --> 統(tǒng)計(jì)為a
- ID選擇器 --> 統(tǒng)計(jì)為b
- 類(lèi)衡便、屬性選擇器、偽類(lèi)選擇器 --> 統(tǒng)計(jì)為c
- 標(biāo)簽選擇器洋访、偽類(lèi)選擇器 --> 統(tǒng)計(jì)為d
- 先比較a值的大小镣陕,a值大的則優(yōu)先級(jí)高;如果a值相等,則再比較b值的大小姻政,b值大的優(yōu)先級(jí)高呆抑;如果b值相等,則比較c值的大小扶歪,c值大的優(yōu)先級(jí)高理肺;如果c值相等,則比較d值的大小善镰,d值大的優(yōu)先級(jí)高妹萨;
選擇器 統(tǒng)計(jì)值
style="color: red" a=1, 0, 0, 0
#id {} 0, b=1, 0, 0
#id #aid 0,b= 2, 0, 0
.sty {} 0, 0, c=1, 0
.sty p[title=""] {} 0, 0, c=2, 0
p:hover {} 0, 0,c= 1, 0
p {} 0, 0, 0,d= 1
ul::after {} 0, 0, 0, d=1
div p {} 0, 0, 0,d= 2
4.a:link, a:hover, a:active, a:visited 的順序是怎樣的? 為什么炫欺?
- 在 CSS 定義中乎完,a:hover 必須被置于 a:link 和 a:visited 之后,才是有效的品洛。
- 在 CSS 定義中树姨,a:active 必須被置于 a:hover 之后(如果沒(méi)有a:hover則必須被置于 a:link 和 a:visited 之后)摩桶,才是有效的。
正確的順序?yàn)閍:link帽揪、a:visited硝清、a:hover、a:active (其中转晰,link和visited可以互換)
原因:
- 當(dāng)鼠標(biāo)移動(dòng)到a標(biāo)簽上芦拿,此時(shí)與標(biāo)簽顏色相關(guān)的選擇器有:a:link,a:visited,a:hover,這三個(gè)選擇器,被寫(xiě)在最后的選擇器會(huì)覆蓋掉之前的選擇器,要想實(shí)現(xiàn)“a:hover”的效果查邢,需要將a:hover置于 a:link 和 a:visited 之后蔗崎。
- 當(dāng)鼠標(biāo)點(diǎn)擊a標(biāo)簽,此時(shí)與標(biāo)簽顏色相關(guān)的選擇器有:a:link,a:visited,a:hover和a:active扰藕,這四個(gè)選擇器,被寫(xiě)在最后的選擇器會(huì)覆蓋掉之前的選擇器缓苛,因此要想實(shí)現(xiàn)“a:active”的效果,需要將a:active置于a:link,a:visited,a:hover 之后邓深。
5.以下選擇器分別是什么意思?
#header{ } /*id選擇器未桥,匹配id="header"的元素*/
.header{ } /*類(lèi)選擇器,匹配class="header"的元素*/
.header .logo{ } /*后代選擇器庐完,匹配class="header"元素的后代元素中class="logo"的元素*/
.header.mobile{ } /*類(lèi)選擇器钢属,匹配class="header mobile"的元素*/
.header p, .header h3{ } /*多元素選擇器徘熔,匹配class="header"元素的后代p元素和后代h3元素*/
#header .nav>li{ } /*多元素選擇器门躯,匹配id="header"元素的后代class="nav"元素的直接后代li元素*/
#header a:hover{ } /*偽類(lèi)選擇器,匹配id="header"元素的后代a元素鼠標(biāo)懸浮在其表面時(shí)的樣式*/
選擇器 |
含義 |
E:first-child |
匹配元素E的第一個(gè)子元素 |
E:link |
匹配所有未被點(diǎn)擊的鏈接 |
E:visited |
匹配所有已被點(diǎn)擊的鏈接 |
E:active |
匹配鼠標(biāo)已經(jīng)其上按下酷师、還沒(méi)有釋放的E元素 |
E:hover |
匹配鼠標(biāo)懸停其上的E元素 |
E:focus |
匹配獲得當(dāng)前焦點(diǎn)的E元素 |
E:root |
匹配文檔的根元素讶凉,對(duì)于HTML文檔,就是HTML元素 |
E:nth-child(n) |
匹配其父元素的第n個(gè)子元素山孔,第一個(gè)編號(hào)為1 |
E:nth-last-child(n) |
匹配其父元素的倒數(shù)第n個(gè)子元素懂讯,第一個(gè)編號(hào)為1 |
E:nth-of-type(n) |
與:nth-child()作用類(lèi)似,但是僅匹配使用同種標(biāo)簽的元素 |
E:only-child |
匹配父元素下僅有的一個(gè)子元素台颠,等同于:first-child:last-child或 :nth-child(1):nth-last-child(1) |
E:only-of-type |
匹配父元素下使用同種標(biāo)簽的唯一一個(gè)子元素褐望,等同于:first-of-type:last-of-type或 :nth-of-type(1):nth-last-of-type(1) |
<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 :
class為item1的元素為 <p class="item1">aa</p>
谨读、<h3 class="item1">bb</h3>
、<h3 class="item1">ccc</h3>
坛吁,父元素為<div class="ct">
劳殖,該div的第一個(gè)子元素為<p class="item1">aa</p>
铐尚,因此aa為紅色
.item1:first-of-type :
class為item1的元素為<p class="item1">aa</p>
、<h3 class="item1">bb</h3>
哆姻、<h3 class="item1">ccc</h3>
宣增,父元素為<div class="ct">
,該div的第一個(gè)<p>
子元素為<p class="item1">aa</p>
矛缨,所以aa背景藍(lán)色统舀,該div的第一個(gè)<h3>
子元素為<h3 class="item1">bb</h3>
,所以bb背景藍(lán)色劳景,而<h3 class="item1">ccc</h3>
為該div的第二個(gè)<h3>
子元素誉简,非同類(lèi)第一個(gè)元素,因此ccc沒(méi)有背景藍(lán)色盟广。
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者