CSS選擇器

1.class 和 id 的使用場景?

  • class:類選擇器蒋搜,一個標簽可以有多個類且同一個類可以用到不同的標簽上览露,多用于多個標簽樣式相似或完全相同時醋寝;用于將一類元素的樣式抽取出來口糕;
  • id選擇器缅阳,其優(yōu)先級高于類選擇器,一個標簽只能有一個id且每個id只能使用一次景描,多用于頁面分塊的塊級標簽上十办;用于控制單個元素的樣式;

2.CSS選擇器常見的有幾種?

1.基礎(chǔ)選擇器:

  • *:通用元素選擇器超棺,匹配頁面上所有元素 * {}
  • #id:id選擇器向族,匹配特定id的元素 #id {}
  • .class:類選擇器,匹配class包含(不是等于)特定類的元素 .class {}
  • element:標簽選擇器 p {}

2.組合選擇器:

  • E,F:多元素選擇器棠绘,同時選中E和F選擇器件相,一般分行寫不同并列元素 .p1,.p2 {}
  • E F:后代選擇器再扭,匹配E元素所有的后代F元素,不僅包括子元素夜矗,還包括子元素向下遞歸 #id.p1 {}
  • E>F:子元素選擇器泛范,匹配E元素的所有直接子元素F元素 #id>.p1 {}
  • E+F:直接相鄰選擇器,匹配E元素之后的相鄰的同級元素F元素 .p1+p {}
  • E~F:普通相鄰選擇器(弟弟選擇器)紊撕,匹配E元素之后的所有同級元素F罢荡,無論是否相鄰 .p1~p {}
  • .class1.class2:同時擁有兩個id或class屬性的元素;id和class選擇器連寫的時候中間沒有分隔符,沒有空格对扶,.和#本身充當分隔符號的元素
  • element#id:同時擁有兩個id或class屬性的元素;id和class選擇器連寫的時候中間沒有分隔符区赵,沒有空格,.和#本身充當分隔符號的元素

3.屬性選擇器:

  • E[Attr]:匹配所有具有屬性Attr的元素 div[id] {} a[href][title] {color:red;}
  • E[Attr=value]:匹配所有屬性Attr等于value的元素 input[type=password] {}
  • E[Attr~=value]:匹配所有屬性Attr具有多個空格分隔浪南、其中一個等于value的元素
  • E[Attr^=value]:匹配所有屬性Attr的值以value開頭的元素
  • E[Attr$=value]:匹配所有屬性Attr的值以value結(jié)尾的元素
  • E[Attr*=value]:匹配所有屬性Attr的值包含value的元素

4.偽類選擇器:

  • a標簽:
    a:link{}:匹配所有未被點擊的鏈接笼才;
    a:visited{}:匹配所有已被點擊的鏈接;
    a:active{}:匹配鼠標已經(jīng)按下逞泄,還沒有釋放的鏈接患整;
    a:hover{}:匹配鼠標懸停其上的鏈接;
  • E:focus:匹配獲得當前焦點的E元素喷众;
  • E:lang(c):匹配lang屬性等于c的E元素各谚;
  • E:enabled:匹配表單中可用的元素;
  • E:disabled:匹配表單中禁用的元素到千;
  • E:checked:匹配表單中被選中的radio或checkbox元素昌渤;
  • E::selection:匹配用戶當前選中的元素;
  • E:first-child:匹配作為長子(第一個子女)的元素E憔四;
  • E:root:匹配文檔的根元素膀息,對于HTML文檔,就是HTML元素了赵;
  • E:nth-child(n):匹配其父元素的第n個子元素潜支,第一個編號為1;
  • E:nth-last-child(n):匹配其父元素的倒數(shù)第n個子元素柿汛,第一個編號為1冗酿;
  • E:nth-of-type(n):與E:nth-child(n)作用類似,但是僅匹配使用同種標簽的元素络断;
  • E:nth-last-of-type(n):與E:nth-last-child(n)作用類似裁替,但是僅匹配使用同種標簽的元素;
  • E:last-child:匹配父元素的最后一個子元素貌笨,等同于:E:nth-last-child(1)弱判;
  • E:first-of-type:匹配父元素下使用同種標簽的第一個子元素,等同于:E:nth-of-type(1)锥惋;
  • E:last-of-type:匹配父元素下使用同種標簽的最后一個子元素昌腰,等同于:E:nth-last-of-type(1)开伏;
  • E:only-child:匹配父元素下僅有的一個子元素;
  • E:only-of-type:匹配父元素下使用同種標簽的唯一一個子元素剥哑;

5.偽元素選擇器:

  • E::first-line:匹配E元素內(nèi)容的第1行硅则;
  • E::first-letter:匹配E元素內(nèi)容的第1個字母;
  • E::before:在E元素之前插入生成的內(nèi)容株婴;
  • E::after:在E元素之后插入生成的內(nèi)容怎虫;

3.選擇器的優(yōu)先級是怎樣的?對于復(fù)雜場景如何計算優(yōu)先級?

從高到低依次為:

  1. 在屬性后使用!important會覆蓋頁面內(nèi)任何位置定義的元素樣式;color: red!important;
  2. 作為style屬性寫在元素標簽上的內(nèi)聯(lián)樣式困介;
  3. id選擇器大审;
  4. 類選擇器;
  5. 偽類選擇器座哩;
  6. 屬性選擇器徒扶;
  7. 標簽選擇器;
  8. 通配符選擇器根穷;給當前界面上所有的標簽設(shè)置屬性 *{}
  9. 瀏覽器自定義姜骡;

復(fù)雜場景:

對于構(gòu)成復(fù)雜的選擇器,首先計算以下4類選擇器的個數(shù)屿良,分別等于以下值a b c d:

  1. 行內(nèi)樣式:<div style=""></div> ==>a
  2. id選擇器:==b
  3. 類圈澈、屬性選擇器和偽類選擇器:==>c
  4. 標簽選擇器、偽元素:==>d
    在對比兩個選擇器的優(yōu)先級時尘惧,先對比a的值康栈,a大的選擇器優(yōu)先級較高,如果a相等喷橙,再對比b的值啥么,b大的優(yōu)先級較高,以此類推……

4.a:link, a:hover, a:active, a:visited 的順序是怎樣的贰逾? 為什么悬荣?

a:link{
color:red;
}
a:visited{
color:green;
}
a:hover{
color:blue;
}
a:active{
color:yellow;
}
4個選擇器有相同的優(yōu)先級,如果將a:visited放在最后疙剑,則訪問過之后永久生效隅熙,將會把另外3個的樣式永久覆蓋掉,而我們只需要讓它把原a:link的樣式覆蓋掉即可核芽,所以要將a:visited排在a:link之后;當鼠標點擊link的時候酵熙,4個選擇器都將生效轧简,如果將a:hover放在最后,則會覆蓋掉a:active的樣式匾二,所以要將a:active放在a:hover之后哮独。

5.以下選擇器分別是什么意思?

#header{
}——id為header的元素

.header{
}——class包含(不是等于)header的元素

.header .logo{
}——class包含header的元素后代中拳芙,class包含logo的元素

.header.mobile{
}——class同時包含header和mobile的元素

.header p, .header h3{
}——class包含header的后代p標簽元素,以及class包含header的后代h3標簽元素

#header .nav>li{
}——id為header的元素后代中皮璧,class包含nav的元素的直接li標簽子元素

#header a:hover{
}——id為header的元素后代中舟扎,處于鼠標懸停狀態(tài)的a標簽元素

#header .logo~p{
}——id為header的元素后代中,class包含logo的元素的所有同級p標簽元素

#header input[type="text"]{
}——id為header的元素后代中悴务,type屬性值為text的input標簽元素

6.列出你知道的偽類選擇器

  • a標簽:
    a:link{}:匹配所有未被點擊的鏈接睹限;
    a:visited{}:匹配所有已被點擊的鏈接;
    a:active{}:匹配鼠標已經(jīng)按下讯檐,還沒有釋放的鏈接羡疗;
    a:hover{}:匹配鼠標懸停其上的鏈接;
  • E:focus:匹配獲得當前焦點的E元素别洪;
  • E:lang(c):匹配lang屬性等于c的E元素叨恨;
  • E:enabled:匹配表單中可用的元素;
  • E:disabled:匹配表單中禁用的元素挖垛;
  • E:checked:匹配表單中被選中的radio或checkbox元素痒钝;
  • E::selection:匹配用戶當前選中的元素;
  • E:first-child:匹配E元素的父元素的第一個子元素(第一個子元素須為E標簽才會選中)痢毒;
  • E:root:匹配文檔的根元素送矩,對于HTML文檔,就是HTML元素闸准;
  • E:nth-child(n):匹配其父元素的第n個子元素益愈,第一個編號為1;
  • E:nth-last-child(n):匹配其父元素的倒數(shù)第n個子元素夷家,第一個編號為1蒸其;
  • E:nth-of-type(n):與E:nth-child(n)作用類似,但是僅匹配使用同種標簽的元素库快;
  • E:nth-last-of-type(n):與E:nth-last-child(n)作用類似摸袁,但是僅匹配使用同種標簽的元素;
  • E:last-child:匹配父元素的最后一個子元素义屏,等同于:E:nth-last-child(1)靠汁;
  • E:first-of-type:匹配元素E的父元素下使用相同標簽的第一個子元素,等同于:E:nth-of-type(1)闽铐;
  • E:last-of-type:匹配父元素下使用同種標簽的最后一個子元素蝶怔,等同于:E:nth-last-of-type(1);
  • E:only-child:匹配父元素下僅有的一個子元素兄墅;
  • E:only-of-type:匹配父元素下使用同種標簽的唯一一個子元素踢星;

7.div:first-child、div:first-of-type隙咸、div :first-child和div :first-of-type的作用和區(qū)別 (注意空格的作用)

  • div:first-child匹配作為div父元素長子的div元素(既是長子沐悦,又是div)
  • div:first-of-type匹配div父元素第一個div元素(可以是父元素的第n個元素)
  • div :first-child相當于div *:first-child成洗,匹配div元素的第一個子元素(無論是不是div)
  • div :first-of-type相當于 div *:first-of-type,匹配div子元素中的同類型元素的第一個元素(無論是不是div元素)

8.運行如下代碼藏否,解析下輸出樣式的原因

<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>

Image.png

.item1:first-child選擇器匹配.item1父元素下作為長子的.item1元素瓶殃,即<p class="item1">aa</p>,所以文字aa變紅色副签;.item1:first-of-type選擇器匹配.item1的父元素下?lián)碛邢嗤瑯撕灥牡谝粋€.item1元素遥椿,即使用p標簽的第一個.item1元素<p class="item1">aa</p>,和使用h3標簽的第一個.item1元素<h3 class="item1">bb</h3>继薛,所以文字aa和bb的底色變藍色修壕。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市遏考,隨后出現(xiàn)的幾起案子慈鸠,更是在濱河造成了極大的恐慌,老刑警劉巖灌具,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件青团,死亡現(xiàn)場離奇詭異,居然都是意外死亡咖楣,警方通過查閱死者的電腦和手機督笆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來诱贿,“玉大人娃肿,你說我怎么就攤上這事≈槭” “怎么了料扰?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長焙蹭。 經(jīng)常有香客問我晒杈,道長,這世上最難降的妖魔是什么孔厉? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任拯钻,我火速辦了婚禮,結(jié)果婚禮上撰豺,老公的妹妹穿的比我還像新娘粪般。我一直安慰自己,他們只是感情好污桦,可當我...
    茶點故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布亩歹。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪捆憎。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天梭纹,我揣著相機與錄音躲惰,去河邊找鬼。 笑死变抽,一個胖子當著我的面吹牛础拨,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播绍载,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼诡宗,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了击儡?” 一聲冷哼從身側(cè)響起塔沃,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎阳谍,沒想到半個月后蛀柴,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡矫夯,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年鸽疾,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片训貌。...
    茶點故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡制肮,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出递沪,到底是詐尸還是另有隱情豺鼻,我是刑警寧澤,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布区拳,位于F島的核電站拘领,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏樱调。R本人自食惡果不足惜约素,卻給世界環(huán)境...
    茶點故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望笆凌。 院中可真熱鬧圣猎,春花似錦、人聲如沸乞而。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至欠啤,卻和暖如春荚藻,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背洁段。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工应狱, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人祠丝。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓疾呻,卻偏偏與公主長得像,于是被迫代替她去往敵國和親写半。 傳聞我的和親對象是個殘疾皇子岸蜗,可洞房花燭夜當晚...
    茶點故事閱讀 42,877評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 1,class 和 id 的使用場景? 1.class是類選擇器叠蝇,用.class定義璃岳,定位到頁面中有相同特征的一類...
    饑人谷_思銘閱讀 365評論 0 0
  • class和id的使用場景 class指定標簽的類名,屬性值可出現(xiàn)在多個標簽中蟆肆。id指定標簽的唯一標識矾睦,為某一元素...
    饑人谷_saybye閱讀 446評論 0 0
  • 1.class 和 id 的使用場景? class用于定位某一類元素,頁面某一元素有共同特征的可以用class元素...
    阿潔2185閱讀 375評論 0 0
  • 1.class 和 id 的使用場景?#### class是類選擇器炎功,選擇的是同一個類的元素枚冗;id選擇器選擇的是有...
    zhaonu閱讀 255評論 0 0
  • class 和 id 的使用場景? class寫專門的class通用和私有模塊命名,id具有唯一性且優(yōu)先級太高蛇损,用...
    好好頑閱讀 402評論 0 0