搜尋
首頁web前端css教學CSS選擇器整理

CSS選擇器整理

Feb 09, 2017 am 11:23 AM
css選擇器

很多人都覺得CSS特別簡單,但其實真正寫好CSS並不容易,CSS的每一點其實內容都很多,就拿選擇器來說,CSS選擇器大概可以分為五類:

  • 元素選擇器

  • 關係選擇器

  • 屬性選擇器

  • 選擇器

    名稱
描述

*選擇指定的元素id選擇器選擇id屬性等於idName的元素CSS關係選擇器選擇器名稱描述子選擇器
配選擇器
#idName
.className 元素選擇器只要是寫都會常用,這一塊的內容非常簡單,沒什麼特別要說的。
E >F

選擇所有作為E元素的子元素F

E+FE~F兄弟選擇器選擇E元素所有兄弟元素F這裡要注意幾點:子選擇器只能選中孫選器元素,而不能選中孫字元素;包含選擇符將會選中所有符合條件的後代,包括兒子,孫子,孫子的孫子...在Android Browser4.2.*及以下,偽類選擇器與兄弟選擇符一起使用會有一個bug,查看詳情。 描述 [att="val" ]
相鄰選擇符只會選中符合條件的相鄰的兄弟元素;而兄弟選擇符會選中所有符合條件的兄弟元素,不強制是緊鄰的元素。 :checked
屬性選擇器 選擇器
選擇具有att屬性且屬性值等於val的E元素

E[att~="val"]

  • 選擇具有att屬性且屬性值其中一個等於val的E元素(包含只有一個值且該值等於val的情況)

  • E[att|="val"]

  • 選擇具有att屬性且屬性值為以val開頭並用連接符

    -分隔的字串的E元素,如果屬性值僅為val,也將被選取

E[att^="val"]

選擇具有att屬性且屬性值為以val開頭的字串的E元素E[att$="val"]選擇具有att屬性且屬性值為以val結尾的字串的E元素E[att*="val"] att屬性且屬性值為包含val的字串的E元素

偽類選擇器

:0 設定超連結a在其連結位址已被存取過時的樣式設定元素滑鼠在其懸停時的樣式E:focusE:checkedE:enabledE:disabledE:emptyEroot:root 。在HTML中,根元素永遠是HTMLE:not(s)匹配不含s選擇符的元素EE:first-childE:first-child一個子元素E匹配父元素的最後一個子元素E匹配父元素的第n個子元素EE:first-of-typeE:last--type-type-type的最後一個同級兄弟元素EE:only-of-type匹配同類型中的唯一的一個同級兄弟元素E匹配同類型中的第n個同級兄弟元素E匹配同類型中的倒數第n個同級兄弟元素E
選擇器 描述
E:link
E:hover
。使用者啟動(滑鼠點擊與釋放之間發生的事件)時的樣式
設定元素在成為輸入焦點(此元素的onfocus事件發生)時的樣式。 (一般應用於表單元素)
匹配使用者介面上處於選取狀態的元素E。 (用於input type為radio與checkbox時)
匹配使用者介面上處於可用狀態的元素E。 (一般應用於表單元素)
匹配使用者介面上處於停用狀態的元素E。 (一般應用於表單元素)
匹配沒有任何子元素(包括text節點)的元素E
E:last-child
E:only-childE
E:nth-child(n)
E:nth-last-child(n) E:nth-last-child(n)
E:nth-last-child(n)個子元素E
匹配同類型中的第一個同級兄弟元素E
)
E:nth-last-of-type(n)
<p>注意事项:</p> <ul class=" list-paddingleft-2"> <li><p>超链接的4种状态(访问前,鼠标悬停,当前被点击,已访问),需要有特定的书写顺序才能生效;<strong>a:hover 必须位于 a:link 和 a:visited 之后,a:active 必须位于 a:hover 之后</strong>。</p></li> <li><p><code>E:first-child选择符,E必须是它的兄弟元素中的第一个元素,换言之,E必须是父元素的第一个子元素。与之类似的伪类还有E:last-child,只不过情况正好相反,需要它是最后一个子元素。

关于:not()的用法

假定有个列表,每个列表项都有一条底边线,但是最后一项不需要底边线。

 li:not(:last-child) {
    border-bottom: 1px solid #ddd;
}

上述代码的意思是:给该列表中除最后一项外的所有列表项加一条底边线。是不是很方便。

关于:nth-child()的用法

要使E:nth-child(n)生效,E元素必须是某个元素的子元素,E的父元素最高是body,即E可以是body的子元素。:first-child:last-child:only-child:nth-last-child(n)也是一样。
nth-child(n)括号里的n可以是一个数字,一个关键字,或者一个公式。

:nth-child(length) /*参数是具体数字 length为整数*/
:nth-child(n) /*参数是n,n从0开始计算*/
:nth-child(n*length) /*n的倍数选择,n从0开始算*/
:nth-child(n+length) /*选择大于等于length后面的元素*/
:nth-child(-n+length) /*选择小于等于length前面的元素*/
:nth-child(n*length+1) /*表示隔几选一*/
:nth-child(2n) / :nth-child(even) /*表示偶数*/
:nth-child(2n+1) / :nth-child(odd) /*表示奇数*/

关于:...-child:...-of-type的差异

这两个系列的属性确实很相似,对于不熟悉的人可能很难区分。

E:first-of-type 总是能命中父元素的第1个为E的子元素,不论父元素第1个子元素是否为E;而E:first-child里的E元素必须是它的兄弟元素中的第一个元素,否则匹配失效。E:last-of-type E:last-child也是同理。
E:nth-of-type(n)总是能命中父元素的第n个为E的子元素,不论父元素第n个子元素是否为E;而E:nth-child(n)会选择父元素的第n个子元素E,如果第n个子元素不是E,则是无效选择符,但n会递增。
关于:nth-child():nth-of-type()的区别可以看这篇文章

:empty区分空元素

选择不包含子元素的p元素:

p:empty

选择包含子元素的p元素:

p:not(:empty)

伪对象选择器

选择器 描述
E:before/E::before 在目标元素E的前面插入的内容。用来和content属性一起使用
E:after/E::after 在目标元素E的后面插入的内容。用来和content属性一起使用
E:first-letter/E::first-letter 设置元素内的第一个字符的样式
E:first-line/E::first-line 设置元素内的第一行的样式
E::placeholder 设置元素文字占位符的样式。(一般用于input输入框)
E::selection 设置元素被选择时的字体颜色和背景颜色

注意事项:

  • ::placeholder在使用时需要加上各个浏览器的前缀;除了Firefox是 ::[prefix]placeholder,其他浏览器都是使用 ::[prefix]input-placeholder

总结

选择器用得好其实可以让我们少些很多代码。其实还有一些东西没有展开来讲,比如:before:after,后面专门写一篇文章来说。


很多人都覺得CSS特別簡單,但其實真正寫好CSS並不容易,CSS的每一點其實內容都很多,就拿選擇器來說,CSS選擇器大概可以分為五類:

  • 元素選擇器

  • 關係選擇器

  • 屬性選擇器

  • 選擇器

    名稱
描述

*選擇指定的元素id選擇器選擇id屬性等於idName的元素CSS關係選擇器選擇器名稱描述子選擇器
配選擇器
#idName
.className 元素選擇器只要是寫都會常用,這一塊的內容非常簡單,沒什麼特別要說的。
E >F

選擇所有作為E元素的子元素F

E+FE~F兄弟選擇器選擇E元素所有兄弟元素F這裡要注意幾點:子選擇器只能選中孫選器元素,而不能選中孫字元素;包含選擇符將會選中所有符合條件的後代,包括兒子,孫子,孫子的孫子...在Android Browser4.2.*及以下,偽類選擇器與兄弟選擇符一起使用會有一個bug,查看詳情。 描述 [att="val" ]
相鄰選擇符只會選中符合條件的相鄰的兄弟元素;而兄弟選擇符會選中所有符合條件的兄弟元素,不強制是緊鄰的元素。 :checked
屬性選擇器 選擇器
選擇具有att屬性且屬性值等於val的E元素

E[att~="val"]

  • 選擇具有att屬性且屬性值其中一個等於val的E元素(包含只有一個值且該值等於val的情況)

  • E[att|="val"]

  • 選擇具有att屬性且屬性值為以val開頭並用連接符

    -分隔的字串的E元素,如果屬性值僅為val,也將被選取

E[att^="val"]

選擇具有att屬性且屬性值為以val開頭的字串的E元素E[att$="val"]選擇具有att屬性且屬性值為以val結尾的字串的E元素E[att*="val"] att屬性且屬性值為包含val的字串的E元素

偽類選擇器

:0 設定超連結a在其連結位址已被存取過時的樣式設定元素滑鼠在其懸停時的樣式E:focusE:checkedE:enabledE:disabledE:emptyEroot:root 。在HTML中,根元素永遠是HTMLE:not(s)匹配不含s選擇符的元素EE:first-childE:first-child一個子元素E匹配父元素的最後一個子元素E匹配父元素的第n個子元素EE:first-of-typeE:last--type-type-type的最後一個同級兄弟元素EE:only-of-type匹配同類型中的唯一的一個同級兄弟元素E匹配同類型中的第n個同級兄弟元素E匹配同類型中的倒數第n個同級兄弟元素E
選擇器 描述
E:link
E:hover
。使用者啟動(滑鼠點擊與釋放之間發生的事件)時的樣式
設定元素在成為輸入焦點(此元素的onfocus事件發生)時的樣式。 (一般應用於表單元素)
匹配使用者介面上處於選取狀態的元素E。 (用於input type為radio與checkbox時)
匹配使用者介面上處於可用狀態的元素E。 (一般應用於表單元素)
匹配使用者介面上處於停用狀態的元素E。 (一般應用於表單元素)
匹配沒有任何子元素(包括text節點)的元素E
E:last-child
E:only-childE
E:nth-child(n)
E:nth-last-child(n) E:nth-last-child(n)
E:nth-last-child(n)個子元素E
匹配同類型中的第一個同級兄弟元素E
)
E:nth-last-of-type(n)
<p>注意事項:</p> <ul class=" list-paddingleft-2"> <li><p>超連結的4種狀態(訪問前,滑鼠懸停,目前被點擊,已訪問),需要有特定的書寫順序才能生效;<strong>a:hover 必須位於a:link 和a :visited 之後,a:active 必須位於a:hover 之後</strong>。 </p></li> <li><p><code>E:first-child選擇符,E必須是它的兄弟元素中的第一個元素,換言之,E必須是父元素的第一個子元素。與之類似的偽類還有E:last-child,只不過情況正好相反,需要它是最後一個子元素。

關於:not()的用法

假定有個列表,每個列表項目都有一條底邊線,但是最後一項不需要底線。

 li:not(:last-child) {
    border-bottom: 1px solid #ddd;
}

上述程式碼的意思是:為該列表中除最後一項外的所有列表項目加上一條底邊線。是不是很方便。

關於:nth-child()的用法

要使E:nth-child(n)生效,E元素必須是某個元素的子元素,E的父元素最高是body,即E可以是body的子元素。 :first-child:last-child:only-child:nth-last-child(n)也是一樣。
nth-child(n)括號裡的n可以是一個數字,一個關鍵字,或一個公式。

:nth-child(length) /*参数是具体数字 length为整数*/
:nth-child(n) /*参数是n,n从0开始计算*/
:nth-child(n*length) /*n的倍数选择,n从0开始算*/
:nth-child(n+length) /*选择大于等于length后面的元素*/
:nth-child(-n+length) /*选择小于等于length前面的元素*/
:nth-child(n*length+1) /*表示隔几选一*/
:nth-child(2n) / :nth-child(even) /*表示偶数*/
:nth-child(2n+1) / :nth-child(odd) /*表示奇数*/

關於:...-child:...-of-type的差異

這兩個系列的屬性確實很相似,對於不熟悉的人可能很難區分。

E:first-of-type 總是能命中父元素的第1個為E的子元素,不論父元素第1個子元素是否為E;而E:first-child裡的E元素必須是它的兄弟元素中的第一個元素,否則匹配失效。 E:last-of-type E:last-child也是同理。
E:nth-of-type(n)總是能命中父元素的第n個為E的子元素,不論父元素第n個子元素是否為E;而E:nth-child( n)會選擇父元素的第n個子元素E,如果第n個子元素不是E,則是無效選擇符,但n會遞增。
關於:nth-child():nth-of-type()的區別可以看這篇文章

:empty區分空元素

選擇不包含子元素的p元素:包含子元素

p:empty

選擇包含子元素的p元素:

p:not(:empty)

偽物件選擇器

在目標元素E的前面插入的內容。用來和content屬性一起使用: /E::first-line設定元素文字佔位符的樣式。 (一般用於input輸入框)設定元素被選擇時的字體顏色和背景顏色::[prefix]placeholder::[prefix]input-placeholder。 :before和:after
選擇器 描述
E:after/E::after 在目標元素E的後面插入的內容。用來和content屬性一起使用
E:first-letter/E::first-letter 設定元素內的第一個字元的樣式
設定元素內的第一行的樣式 E::placeholder
E::selection
注意事項:使用於館時需要加上各個瀏覽器的前綴;除了Firefox是,其他瀏覽器都是使用
總結 選擇器用得好其實可以讓我們少些很多程式碼。其實還有一些東西沒有展開來講,像是
,後面專門寫一篇文章來說。

更多CSS選擇器整理相關文章請關注PHP中文網!
陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
兩個圖像和一個API:我們重新著色產品所需的一切兩個圖像和一個API:我們重新著色產品所需的一切Apr 15, 2025 am 11:27 AM

我最近找到了一種動態更新任何產品圖像的顏色的解決方案。因此,只有一種產品之一,我們可以以不同的方式對其進行著色以顯示

每周平台新聞:第三方代碼,被動混合內容,連接最慢的國家的影響每周平台新聞:第三方代碼,被動混合內容,連接最慢的國家的影響Apr 15, 2025 am 11:19 AM

在本週的綜述中,燈塔在第三方腳本上闡明了燈光,不安全的資源將在安全站點上被阻止,許多國家連接速度

託管您自己的非JavaScript分析的選項託管您自己的非JavaScript分析的選項Apr 15, 2025 am 11:09 AM

有很多分析平台可幫助您跟踪網站上的訪問者和使用數據。也許最著名的是Google Analytics(廣泛使用)

它全部都在頭上:管理帶有React頭盔的React Power Site的文檔頭它全部都在頭上:管理帶有React頭盔的React Power Site的文檔頭Apr 15, 2025 am 11:01 AM

該文檔負責人可能不是網站上最迷人的部分,但是其中所處的內容對於您的網站的成功也一樣重要

JavaScript中的Super()是什麼?JavaScript中的Super()是什麼?Apr 15, 2025 am 10:59 AM

當您看到一些稱為super()的JavaScript時,在子類中,您會使用super()調用其父母的構造函數和超級。訪問它

比較不同類型的本機JavaScript彈出窗口比較不同類型的本機JavaScript彈出窗口Apr 15, 2025 am 10:48 AM

JavaScript具有各種內置彈出API,它們顯示用於用戶交互的特殊UI。著名:

為什麼可訪問的網站如此難以構建?為什麼可訪問的網站如此難以構建?Apr 15, 2025 am 10:45 AM

前幾天,我與一些前端人們聊天,講述了為什麼這麼多公司努力創建可訪問的網站。為什麼可訪問的網站如此艱難

'隱藏”屬性顯然很弱'隱藏”屬性顯然很弱Apr 15, 2025 am 10:43 AM

有一個HTML屬性,它可以正是您認為應該做的:

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
4 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
1 個月前By尊渡假赌尊渡假赌尊渡假赌

熱工具

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。