css選擇器知識總結(jié)

class和id


區(qū)別

  1. id是唯一的而class不是,id一個頁面只可以使用一次跋理;class可以多次引用屎慢,如果從頭到尾瀏覽源代碼你會發(fā)現(xiàn)只有一個id="header",但是有多個class="entry"恩急。
  2. 屬性的優(yōu)先級問題盛垦。id的優(yōu)先級要高于class。

使用技巧

  1. 子級名字中包含父命名中的部分為開頭裁良。這樣方便在編寫css中明確層次關(guān)系凿将。
  2. class中的子級最好不用id.
  3. class的命名最好用大小寫合用。
  4. id具有唯一性价脾,并且最好在外圍使用(id多用于唯一特值得dom元素上例如:頁面上唯一的頭部牧抵、正文、和底部這些大的樣式彼棍;表單頁面唯一的上傳元素)灭忠,而class具有可重復(fù)性膳算,并且盡量在結(jié)構(gòu)內(nèi)部使用(多用于指一類dom上,例如:所有的按鈕都有同樣的box-shadow弛作;讓這幾個div的寬度相等涕蜂;具體的細(xì)節(jié),比如具體的一個菜單映琳,一行文字)机隙,讓所有的class都成為id的子級或?qū)O級。

常見的選擇器


  • 基礎(chǔ)選擇器
  • 組合選擇器
  • 屬性選擇器
  • 偽類選擇器
  • 偽元素選擇器

基礎(chǔ)選擇器

選擇器 含義
* 通用選擇器萨西,匹配頁面任何元素
#id id選擇器有鹿,匹配特定的id元素
.class 類選擇器,匹配class包含(不是等于)特定類的元素
element 標(biāo)簽選擇器

組合選擇器

E谎脯、F代表基礎(chǔ)選擇器

選擇器 含義
E葱跋,F(xiàn) 同時選擇兩個基礎(chǔ)選擇器
E F 后代選擇器,用空格分隔源梭,匹配E元素所有的后代(不只是子元素)元素F
E>F 子元素選擇器娱俺,匹配E元素的所有直接子元素
E+F 直接相鄰選擇器,匹配E元素之后的相鄰的同級元素F
E~F 普通相鄰選擇器废麻,匹配E元素之后的同級元素F
.class1.class2 同時擁有兩個特性的元素例如:<span class="p2">span</span><h2 class="p2">h2</h2>選擇器h2下的p2則應(yīng)是h2.p2荠卷;對于<h2 class="p2 active">p2</h2>則是.p2.active
element#id 不常用。例如<div id="ct"></div>寫成div#ct

屬性選擇器(用的不多)

選擇器 含義
E[attr=value] 例如:<input type="text"><input type="password">input[]type=password{}

偽類選擇器(代表一個元素的另一種狀態(tài))

選擇器 含義
E:link 匹配所有未被點擊的鏈接
E:visited 匹配所有已經(jīng)被點擊的鏈接
E:active 匹配鼠標(biāo)已經(jīng)被按下烛愧,還沒有釋放的元素
E:hover 匹配鼠標(biāo)懸停其上的E元素

對于E:nth-child和E:nth-of-type用一個例子來說明

<div>
  <h1 class="child">h1</h1>
  <h2 class="child">h2</h2>
  <div class="ct">
    <h1 class="child">ct-h1</h1>
  </div>
  <h2 class="child">h2</h2>
</div>

E:nth-child匹配父元素的第n個子元素油宜。例如:
.child:first-child{color:red;}則h1和ct-h1變紅。
E:nth-of-type匹配.child對應(yīng)的父元素中怜姿,同種標(biāo)簽的第一個慎冤。
.child:first-of-type{background:blue;}則h1,h2社牲,ct-h1變藍(lán)粪薛。

偽元素選擇器

E:before和E:after兩個偽元素必須有content表示在E元素之前插入生成的內(nèi)容悴了。例如:
.wrap:before{
content:'aaa'
}
在元素E內(nèi)部作為第一個子元素生成一個元素搏恤,內(nèi)容是aaa。

選擇器的優(yōu)先級


含義

如果多條規(guī)則作用于同一元素上湃交,且定義的相同屬性的不同值熟空。比如:
<p id="text">text</p>
css中#text{color:red;}
p{color:blue}。則會涉及到優(yōu)先級的問題搞莺。

優(yōu)先級

  1. 息罗!important會覆蓋頁面內(nèi)任何位置定義的元素樣式,在屬性后面使用
    .child:first-child{color:red !important;}
  2. 作為style屬性才沧,寫在元素標(biāo)簽上的內(nèi)聯(lián)樣式迈喉。
  3. id選擇器
  4. 類選擇器
  5. 偽類選擇器
  6. 屬性選擇器
  7. 標(biāo)簽選擇器
  8. 通配符選擇器
  9. 瀏覽器自定義

復(fù)雜場景

行內(nèi)樣式-----a
id選擇器------b
類绍刮、屬性選擇器和偽類選擇器-------c
標(biāo)簽選擇器、偽元素-------------------d
原則:先比較a挨摸,然后依次比較b,c,d孩革。

選擇器 優(yōu)先級
*{} a=0,b=0,c=0,d=0
li{} a=0,b=0,c=0,d=1
li:first-line{} a=0,b=0,c=0,d=2
ul li{} a=0,b=0,c=0,d=2
ul ol+li{} a=0,b=0,c=0,d=3
h1+*[rel=up] a=0,b=0,c=1,d=1
ul ol li.red a=0,b=0,c=1,d=3
li.red.level a=0,b=0,c=2,d=1
style="" a=1
p{} a=0,b=0,c=0,d=1
div p a=0,b=0,c=0,d=1
div p.sith a=0,b=0,c=1,d=2
#sith a=0,b=1,c=0,d=0
body#darkside.sith p{} a=0,b=1,c=1,d=2

樣式覆蓋

如果選擇器一模一樣,但寫了2遍得运,則下面的覆蓋上面

div{color:#333;}
div{color:#999;}

愛恨(lvha)原則


a:link, a:visited, a:hover, a:active的順序的原因:
瀏覽器解析都是從上往下解析
a:visited位于a:hover和a:active前面的原因
如果a:visited位于a:hover和a:active的后面膝蜈,則點擊之后,a:hover和a:active失效熔掺。這是因為當(dāng)點擊之后再用后兩種屬性則這時饱搏,鏈接同時具有a:visited,a:hover兩種屬性,由于a:visited屬性會覆蓋前面的屬性置逻,所以另外兩種屬性會失效推沸。
a:link位于a:hover和a:active前面的原因
如果位于兩者的后面,則鏈接還沒有被點開的時候券坞,同時具有這三種屬性坤学,由于瀏覽器由下往上解析,則先解析a:link报慕,則放棄了a:hover,和a:active的重復(fù)定義深浮。
a:hover位于a:active前面的原因
當(dāng)鼠標(biāo)按下的時候,也是在hover狀態(tài)眠冈,如果位于后面飞苇,則hover就會覆蓋active的顏色。
a:link和a:visited順序呢?zé)o所謂蜗顽,因為不會同時觸發(fā)布卡。

div:first-child和div :first-child以及div:first-of-type,div :first-of-type的區(qū)別

div:first-child表示其父元素的第一個子元素,并且該標(biāo)簽為div雇盖。
div :first-child表示div的第一個子元素忿等。
div:first-of-type表示其父元素的所有子元素中,標(biāo)簽為div的第一個子元素(不管該div標(biāo)簽是不是第一個子元素)崔挖。
div :first-of-type表示div作為父元素的同種標(biāo)簽的第一個贸街。

選擇器的含義

#header{}表示選中id是header的元素
.header{}表示選中class=header的元素
.header .log{}表示選中class=header的元素的后代是class=logo的元素
.header.mobile{}表示選中同時擁有header和mobile類的元素
.header p, .header{}表示選中id=header的元素的后代p和class=header的元素的后代h3
#header .nav>li{}表示選中id=header的元素的后代class=nav下的所有l(wèi)i
#header a:hover{}表示匹配id=header的后代a的鼠標(biāo)懸停效果
#header .logo~p{}表示匹配id=header的后代中,類名為logo元素之后的同級元素中的所有p標(biāo)簽
#header input[type="text"]{}表示匹配id=class的后代屬性type=text的input元素狸相。

運行代碼薛匪,解析輸出樣式的原因


代碼:

代碼01.png

結(jié)果:


結(jié)果01.png

解析:.item1:first-child中.item1對應(yīng)的元素為<p class="item1">aa</p>,<h3 class="item1">bb</h3>,<h3 class="item1">ccc</h3>,這三個元素的父元素是<div class="ct">,父元素的第一個標(biāo)簽是p,所以aa變?yōu)榧t色。
.item1:first-of-type中.item1的元素為<p class="item1">aa</p>脓鹃,<h3 class="item1">bb</h3>,<h3 class="item1">ccc</h3>,這三個元素的父元素為<div class="ct">,首次出現(xiàn)的類型為p和第一個h3逸尖。所以,aa和bb為藍(lán)色。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末娇跟,一起剝皮案震驚了整個濱河市岩齿,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌苞俘,老刑警劉巖纯衍,帶你破解...
    沈念sama閱讀 206,013評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異苗胀,居然都是意外死亡襟诸,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,205評論 2 382
  • 文/潘曉璐 我一進(jìn)店門基协,熙熙樓的掌柜王于貴愁眉苦臉地迎上來歌亲,“玉大人,你說我怎么就攤上這事澜驮∠菥荆” “怎么了?”我有些...
    開封第一講書人閱讀 152,370評論 0 342
  • 文/不壞的土叔 我叫張陵杂穷,是天一觀的道長悍缠。 經(jīng)常有香客問我,道長耐量,這世上最難降的妖魔是什么飞蚓? 我笑而不...
    開封第一講書人閱讀 55,168評論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮廊蜒,結(jié)果婚禮上趴拧,老公的妹妹穿的比我還像新娘。我一直安慰自己山叮,他們只是感情好著榴,可當(dāng)我...
    茶點故事閱讀 64,153評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著屁倔,像睡著了一般脑又。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上锐借,一...
    開封第一講書人閱讀 48,954評論 1 283
  • 那天问麸,我揣著相機與錄音,去河邊找鬼瞎饲。 笑死口叙,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的嗅战。 我是一名探鬼主播,決...
    沈念sama閱讀 38,271評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼驮捍!你這毒婦竟也來了疟呐?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,916評論 0 259
  • 序言:老撾萬榮一對情侶失蹤东且,失蹤者是張志新(化名)和其女友劉穎启具,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體珊泳,經(jīng)...
    沈念sama閱讀 43,382評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡鲁冯,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,877評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了色查。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片薯演。...
    茶點故事閱讀 37,989評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖秧了,靈堂內(nèi)的尸體忽然破棺而出跨扮,到底是詐尸還是另有隱情,我是刑警寧澤验毡,帶...
    沈念sama閱讀 33,624評論 4 322
  • 正文 年R本政府宣布衡创,位于F島的核電站,受9級特大地震影響晶通,放射性物質(zhì)發(fā)生泄漏璃氢。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,209評論 3 307
  • 文/蒙蒙 一狮辽、第九天 我趴在偏房一處隱蔽的房頂上張望拔莱。 院中可真熱鬧,春花似錦隘竭、人聲如沸塘秦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,199評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽尊剔。三九已至,卻和暖如春菱皆,著一層夾襖步出監(jiān)牢的瞬間须误,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,418評論 1 260
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人涂召。 一個月前我還...
    沈念sama閱讀 45,401評論 2 352
  • 正文 我出身青樓捷沸,卻偏偏與公主長得像,于是被迫代替她去往敵國和親蔓榄。 傳聞我的和親對象是個殘疾皇子呵恢,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,700評論 2 345

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

  • 1.class 和 id 的使用場景? class:類選擇器房午,一個標(biāo)簽可以有多個類且同一個類可以用到不同的標(biāo)簽上方淤,...
    饑人谷_兔子君閱讀 1,179評論 0 0
  • 一钉赁,class 和 id 的使用場景? id選擇器,匹配特定id的元素携茂。class是類選擇器你踩,匹配class包含(...
    DeeJay_Y閱讀 352評論 0 0
  • class和id的使用場景 class指定標(biāo)簽的類名,屬性值可出現(xiàn)在多個標(biāo)簽中讳苦。id指定標(biāo)簽的唯一標(biāo)識带膜,為某一元素...
    饑人谷_saybye閱讀 446評論 0 0
  • class 和 id 的使用場景?class指定標(biāo)簽的類名, 把需要相同樣式的元素歸類于一個name下鸳谜,需要此樣式...
    饑人谷_CCCLARITY閱讀 240評論 0 0
  • 1膝藕,class 和 id 的使用場景? 1.class是類選擇器,用.class定義卿堂,定位到頁面中有相同特征的一類...
    饑人谷_思銘閱讀 365評論 0 0