這30個(gè)CSS選擇器,你必須熟記,百益無(wú)一害。

CSS的魅力就是讓我們前端工程師像設(shè)計(jì)師一樣進(jìn)行網(wǎng)頁(yè)的設(shè)計(jì),我們能輕而易舉的改變顏色、布局、制作出漂亮的影音效果等等,我們只需要改幾行代碼,不需要借助任何軟件,就能輕而易舉的實(shí)現(xiàn),感覺(jué)就像魔法師一般,幾秒鐘就能得到一個(gè)想要的效果,是不是很酷呢。

CSS為我們提供了選擇器,這個(gè)酷酷的魔法工具,讓我們隨意能夠操作網(wǎng)頁(yè)元素的樣式,CSS選擇器眾多,我們不可能一次性學(xué)完,但是這30個(gè)CSS選擇器我們必須熟練記憶,可能有的同學(xué)覺(jué)得沒(méi)必要學(xué)這么多,掌握了id、class、后代選擇器就夠了,這算完事了嗎?如果是這樣你就錯(cuò)過(guò)了很多靈活運(yùn)用CSS的機(jī)會(huì),雖然這些新屬性很多都屬于CSS3,但是我們掌握這些新屬性后還是有很大的好處的。

從本篇文章起,我給大家歸納了常用的30個(gè)CSS選擇器,希望通過(guò)我的總結(jié),你能夠喜歡上這些常用的選擇器,廢話不多說(shuō),我們這篇文章將介紹前10個(gè)。

在介紹之前,我們先理解下文檔結(jié)構(gòu)樹(shù)的父子關(guān)系

在學(xué)習(xí)CSS選擇器之前,我們需要弄清楚文檔結(jié)構(gòu)的父子關(guān)系,什么是父元素、子元素以及祖輩元素和后代元素這些概念,清楚了這些邏輯關(guān)系后,你才能更好的掌握CSS選擇器。如下圖所示,我們用樹(shù)形結(jié)構(gòu)來(lái)表示一個(gè)文檔結(jié)構(gòu)。

如上圖所示,相鄰的兩個(gè)節(jié)點(diǎn)(層級(jí)是連續(xù)的),他們之間是父子關(guān)系。如果兩個(gè)元素之間跨越兩個(gè)層級(jí)以上,它們是祖輩和后代的關(guān)系。

1、*:通用選擇器

針對(duì)初學(xué)者來(lái)說(shuō),我們還是從簡(jiǎn)單的開(kāi)始學(xué)起,首先我們來(lái)認(rèn)識(shí)下通用選擇器,然后再逐步深入學(xué)習(xí)其它高級(jí)的選擇器,加入我們想讓文檔中的每個(gè)元素都顯示成紅色,我們可以這么做:

* {color:red;}

通用選擇器,可以匹配頁(yè)面所有的元素。 許多開(kāi)發(fā)者可能會(huì)用這個(gè)技巧如下代碼所示讓元素居中,在開(kāi)發(fā)測(cè)試階段固然是好的,但是我不建議這么做,因?yàn)檫@樣做會(huì)給瀏覽器增加很大的負(fù)擔(dān)。

* {

?margin: 0;

?padding: 0;

}

瀏覽器兼容性:

IE6+

Firefox

Chrome

Safari

Opera

2、#X:ID選擇器

ID選擇器的開(kāi)頭使用#號(hào),但是你在使用的時(shí)候,需要謹(jǐn)慎。

問(wèn)問(wèn)自己:是否真的需要使用ID選擇器來(lái)定義樣式

id選擇器比較局限,不能重用。因此需要慎重考慮。

#container {

?width: 960px;

?margin: auto;

}

瀏覽器兼容性:

IE6+

Firefox

Chrome

Safari

Opera

3、.X:類(lèi)選擇器

類(lèi)選擇器的開(kāi)頭用.(點(diǎn))進(jìn)行表示。與ID選擇器的區(qū)別就是可以重用。定義多個(gè)元素的樣式,好比按組進(jìn)行歸類(lèi),同一類(lèi)的樣式統(tǒng)一定義。

.error {

color: red;

}

如果把兩個(gè)類(lèi)串在一起,選擇的就是同時(shí)具有兩個(gè)類(lèi)名的元素,類(lèi)名的順序則無(wú)所謂,比如 class="urgent warning" , css 選擇器你也可以這樣寫(xiě) .warning .urgent。

瀏覽器兼容性:

IE6+

Firefox

Chrome

Safari

Opera

4、X Y:后代選擇器

后代選擇器,英文名稱(chēng):descendant selector,本文的開(kāi)頭我們學(xué)習(xí)了什么是后代元素,比如我們要選擇在li元素中包含a標(biāo)簽的鏈接(不是所有的鏈接),取消下劃線的默認(rèn)樣式,我們可以這樣代碼實(shí)現(xiàn):

li a {

text-decoration: none;

}

經(jīng)驗(yàn)分享: 如果你的選擇器看起來(lái)像X Y Z A B.error這樣就錯(cuò)了。問(wèn)問(wèn)自己是否真的需要加入這么多負(fù)荷, 這樣寫(xiě)的可讀性也太差了。還有一個(gè)需要注意的,后代元素的層級(jí)問(wèn)題,可能會(huì)很深。

瀏覽器兼容性:

IE6+

Firefox

Chrome

Safari

Opera

5、X:元素選擇器

假如你想針對(duì)Html預(yù)定義的標(biāo)簽,比如類(lèi)似:p,h3,em,a這些標(biāo)簽,我們可以快速為某類(lèi)標(biāo)簽定義樣式。如下段代碼所示:

a { color: red; }

ul { margin-left: 0; }

瀏覽器兼容性:

IE6+

Firefox

Chrome

Safari

Opera

6、X:visited and X:link :鏈接偽類(lèi)選擇器

:link 偽類(lèi)來(lái)定義所有還沒(méi)有點(diǎn)擊鏈接的樣式,:visited 偽類(lèi)定義我們?cè)?jīng)點(diǎn)擊過(guò)或者訪問(wèn)過(guò)的鏈接樣式,示例代碼如下:

a:link { color: red; }

a:visted { color: purple; }

瀏覽器兼容性:

IE7+

Firefox

Chrome

Safari

Opera

7、 X + Y:緊鄰?fù)x擇器

若想選擇同一個(gè)父元素中,相鄰的同級(jí)別的元素,我們可以使用緊鄰?fù)x擇器(adjacent selector)。如若想把緊跟在h1元素的段落上外邊距去掉,你可以這么寫(xiě):

h1 + p { margin-top:0 }

瀏覽器兼容性:

IE7+

Firefox

Chrome

Safari

Opera

8、 X > Y:子元素選擇器

有時(shí)候我們并想選擇所有的后代元素,而是想縮小范圍,只選擇一個(gè)元素的子元素,比如我們只想選擇 #container>ul 定義id為container的div里的ul元素,而不是曾經(jīng)更深的后代元素比如li里的ul。

html文檔結(jié)構(gòu):

<div id="container">

<ul>

<li> List Item

<ul>

<li> Child </li>

</ul>

</li>

<li> List Item </li>

<li> List Item </li>

<li> List Item </li>

</ul>

</div>

css代碼如下:

div#container > ul {

border: 1px solid black;

}

文檔選擇樹(shù)形結(jié)構(gòu):

代碼效果:

瀏覽器兼容性:

IE7+

Firefox

Chrome

Safari

Opera

9、 X ~ Y:后續(xù)同胞選擇器

后續(xù)同胞選擇器使用 ~ 表示,選擇一個(gè)元素后面同屬一個(gè)父元素的另一個(gè)元素。這個(gè)選擇器和 X + Y 很像,但沒(méi)那么嚴(yán)格。后續(xù)同胞選擇器應(yīng)用會(huì)更廣泛。比如下面這個(gè)例子,我們選擇所有ul后面的P元素。

html文檔結(jié)構(gòu):

??<div id="container">

<ul>

<li> List Item

<ul>

<li> Child </li>

</ul>

</li>

<li> List Item </li>

<li> List Item </li>

<li> List Item </li>

</ul>

<p> Lorem ipsum dolor sit amet, <a href="#" title="Some title">consectetur</a> adipisicing elit, sed do eiusmod tempor. </p>

<p> Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor. </p>

<p> Lorem ipsum dolor sit amet, consectetur <a href="#">adipisicing</a> elit, sed do eiusmod tempor. </p>

<p> Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor. </p>

</div>

css代碼如下:

ul ~ p {

?color: red;

}

文檔選擇樹(shù)形結(jié)構(gòu):

代碼效果:

瀏覽器兼容性:

IE7+ Firefox Chrome Safari Opera

10、 X[title]:簡(jiǎn)單屬性選擇器

如果想選擇具有某個(gè)屬性的元素,而不管屬性的值是什么,我們可以使用簡(jiǎn)單屬性選擇器。例如想讓帶有title屬性的鏈接標(biāo)簽才會(huì)被匹配,沒(méi)有title屬性的標(biāo)簽不會(huì)受到影響。你可以這么寫(xiě)代碼:

a[title] {

?color: green;

}

瀏覽器兼容性:

IE7+ Firefox Chrome Safari Opera

小節(jié)

今天的內(nèi)容就和大家分享到這里,CSS選擇器是CSS的基礎(chǔ)和重要內(nèi)容,雖然簡(jiǎn)單,但是靈活掌握可不容易,接下來(lái)的文章,我將和大家繼續(xù)分享CSS選擇器的剩余內(nèi)容。

本次給大家推薦一個(gè)免費(fèi)的學(xué)習(xí)圈,里面概括移動(dòng)應(yīng)用網(wǎng)站開(kāi)發(fā),css,html,webpack,vue node angular以及面試資源等。對(duì)web開(kāi)發(fā)技術(shù)感興趣的同學(xué),歡迎加扣扣qun:895757445,不管你是小白還是大牛我都?xì)g迎,還有大牛整理的一套高效率學(xué)習(xí)路線和教程與您免費(fèi)分享,同時(shí)提供免費(fèi)直播課。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 譯者:顏海鏡譯文地址:http://yanhaijing.com/css/2014/01/04/the-30-cs...
    IT程序獅閱讀 1,550評(píng)論 2 8
  • 開(kāi)篇 有30個(gè)CSS選擇器你必須爛熟于心,它們適應(yīng)于當(dāng)今各大主流瀏覽器。 1.* *選擇器選擇的是每一個(gè)單一元素。...
    Pursue閱讀 2,246評(píng)論 0 18
  • ————轉(zhuǎn)自W3Cschool,并經(jīng)過(guò)我自己整理而成———— 首先講一件很重要的事情,在CSS選擇器進(jìn)行元素定位的...
    Primers閱讀 466評(píng)論 0 0
  • 一、基本選擇器 回顧選擇器 通配符選擇器、元素選擇器、類(lèi)選擇器、ID選擇器、后代選擇器 新增基本選擇器 子元素選擇...
    越IT閱讀 1,306評(píng)論 0 3
  • ??JavaScript 與 HTML 之間的交互是通過(guò)事件實(shí)現(xiàn)的。 ??事件,就是文檔或?yàn)g覽器窗口中發(fā)生的一些特...
    霜天曉閱讀 3,715評(píng)論 1 11

友情鏈接更多精彩內(nèi)容