亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

首頁 web前端 css教學(xué) CSS3中的關(guān)係和屬性選擇器

CSS3中的關(guān)係和屬性選擇器

Feb 18, 2025 am 09:14 AM

Relational and Attribute Selectors in CSS3

以下摘錄自 Alexis Goldstein、Louis Lazaris 和 Estelle Weyl 合著的書籍《HTML5 & CSS3 for the Real World, 2nd Edition》。本書在全球各地的商店有售,您也可以在此處購買電子書版本。

核心要點(diǎn)

  • CSS3 選擇器允許對(duì)網(wǎng)頁上的元素進(jìn)行精確定位,擴(kuò)展了先前 CSS 版本的功能。關(guān)係選擇器和屬性選擇器是 CSS3 的關(guān)鍵特性。
  • 關(guān)係選擇器根據(jù)元素在標(biāo)記中的相互關(guān)係來定位元素。這些包括後代組合器 (E F)、子組合器 (E > F)、相鄰兄弟選擇器或下一個(gè)兄弟選擇器 (E F) 和通用兄弟選擇器或後續(xù)兄弟選擇器 (E ~ F)。
  • CSS3 中的屬性選擇器允許根據(jù)元素的屬性進(jìn)行匹配,CSS3 通過允許模式匹配來擴(kuò)展 CSS2 的屬性選擇器。這些包括E[attr]、E[attr=val]、E[attr|=val]、E[attr~=val]、E[attr^=val]、E[attr$=val] 和E[attr* =val]。
  • 所有現(xiàn)代瀏覽器都支持 CSS3 選擇器,包括 IE9 及更高版本。使用這些選擇器可以大大提高網(wǎng)頁設(shè)計(jì)和開發(fā)的效率和有效性。

CSS3 選擇器

CSS 選擇器是 CSS 的核心。如果沒有選擇器來定位頁面上的元素,修改元素 CSS 屬性的唯一方法是使用元素的 style 屬性並內(nèi)聯(lián)聲明樣式,這既笨拙又難以維護(hù)。因此我們使用選擇器。最初,CSS 允許按類型、類和/或 ID 匹配元素。這需要向我們的標(biāo)記中添加類和 ID 屬性來創(chuàng)建掛鉤,並區(qū)分相同類型的元素。 CSS2.1 添加了偽元素、偽類和組合器。使用 CSS3,我們可以使用各種選擇器來定位頁面上的幾乎任何元素。

在下面的描述中,我們將包含早期 CSS 版本中提供給我們的選擇器。之所以包含它們,是因?yàn)殡m然我們可以使用 CSS3 選擇器,但早於 CSS3 的選擇器也是 CSS 選擇器級(jí)別 3 規(guī)範(fàn)的一部分,並且仍然受支持,因?yàn)?CSS 選擇器級(jí)別 3 擴(kuò)展了它們。即使對(duì)於那些已經(jīng)存在相當(dāng)一段時(shí)間的選擇器,也值得在這裡回顧一下,因?yàn)榕f規(guī)範(fàn)中有一些鮮為人知的隱藏的寶石。請(qǐng)注意,所有現(xiàn)代瀏覽器(包括 IE9 及更高版本)都支持所有 CSS3 選擇器。

關(guān)係選擇器

關(guān)係選擇器根據(jù)元素在標(biāo)記中的相互關(guān)係來定位元素。所有這些都從 IE7 開始支持,並且在所有其他主要瀏覽器中都支持:

後代組合器 (E F)

您一定應(yīng)該熟悉這個(gè)。後代選擇器定位任何作為元素 E 的後代(子元素、孫元素、曾孫元素等)的元素 F。例如,ol li 定位位於有序列表內(nèi)的 li 元素。這將包括嵌套在 ol 中的 ul 中的 li 元素,這可能不是您想要的。

子組合器 (E > F)

此選擇器匹配任何作為元素 E 的直接子元素的元素 F——任何進(jìn)一步嵌套的元素都將被忽略。繼續(xù)上面的例子,ol > li 只會(huì)定位直接位於 ol 內(nèi)的 li 元素,並將忽略嵌套在 ul 內(nèi)的那些元素。

相鄰兄弟選擇器或下一個(gè)兄弟選擇器 (E F)

這將匹配任何與 E 共享相同父元素的元素 F,並且在標(biāo)記中直接位於 E 之後。例如,li li 將定位給定容器中的所有 li 元素,除了第一個(gè) li 元素。

通用兄弟選擇器或後續(xù)兄弟選擇器 (E ~ F)

這個(gè)有點(diǎn)棘手。它將匹配任何與任何 E 共享相同父元素並在標(biāo)記中位於其之後的元素 F。因此,h1 ~ h2 將匹配任何位於 h1 之後的 h2,只要它們都共享相同的直接父元素——也就是說,只要 h2 沒有嵌套在任何其他元素中。

讓我們來看一個(gè)簡(jiǎn)單的例子:

<header>
  <h1>Main title</h1>
  <h2>This subtitle is matched</h2>
</header>
<article>
  <p>blah, blah, blah …</p>
  <h2>This is not matched by h1 ~ h2, but is by header ~ h2</h2>
  <p>blah, blah, blah …</p>
</article>

選擇器字符串 h1 ~ h2 將匹配第一個(gè) h2,因?yàn)?h1 和 h2 都是 header 的子元素或直接後代。您將在代碼片段中看到的下一個(gè) h2 不匹配,因?yàn)樗母冈厥?article,而不是 header。但是,它將匹配 header ~ h2。類似地,h2 ~ p 只匹配最後一個(gè)段落,因?yàn)榈谝粋€(gè)段落位於它與父元素 article 共享的 h2 之前。

注意:為什麼沒有“父”選擇器?

您會(huì)注意到,到目前為止,還沒有“父”或“祖先”選擇器,也沒有“前置兄弟”選擇器。瀏覽器必須向後遍歷 DOM 樹或在決定是否應(yīng)用樣式之前遞歸到嵌套元素集的性能,阻止了擁有原生“向上遍歷 DOM 樹”選擇器的能力。

jQuery 包含 :has() 作為祖先選擇器。此選擇器正在考慮用於 CSS 選擇器級(jí)別 4,但尚未在任何瀏覽器中實(shí)現(xiàn)。如果並當(dāng)它被實(shí)現(xiàn)時(shí),我們將能夠使用E:has(F) 來查找具有F 作為後代的E,E:has(> F) 來查找具有F 作為直接子元素的E,E:has( F ) 來查找直接位於兄弟F 之前的E,以及類似的。

瀏覽《The HTML5 Herald》的樣式表,您會(huì)看到我們?cè)谠S多地方使用了這些選擇器。例如,在確定站點(diǎn)的整體佈局時(shí),我們希望三個(gè)列的 div 向左浮動(dòng)。為了避免將此樣式應(yīng)用於嵌套在其內(nèi)部的任何其他 div,我們使用子選擇器:

main > div {
  float: left;
  overflow: hidden;
}

隨著我們?cè)诮酉聛淼膸渍轮邢蛘军c(diǎn)添加新樣式,您將看到許多此類選擇器類型。

屬性選擇器

CSS2 引入了幾個(gè)屬性選擇器。這些允許根據(jù)元素的屬性進(jìn)行匹配。 CSS3 擴(kuò)展了這些屬性選擇器,允許基於模式匹配進(jìn)行一些定位。 CSS 選擇器級(jí)別 4 添加了一些更多內(nèi)容:

E[attr] 匹配任何具有屬性 attr 的元素 E,而不管屬性的值如何。我們?cè)诘?4 章中使用了它來設(shè)置必需輸入的樣式;input:required 在最新的瀏覽器中有效,但 input[required] 也具有相同的效果,並且在 IE7 和 IE8 中也有效。

E[attr=val] 匹配任何具有屬性 attr 且其值為 val 的元素 E。雖然不是新的,但在定位表單輸入類型時(shí)它很有用;例如,使用 input[type=checkbox] 定位複選框。

E[attr|=val] 匹配任何其屬性 attr 的值為 val 或以 val- 開頭的元素 E。這最常用於 lang 屬性。例如,p[lang|="en"] 將匹配任何被定義為英語的段落,無論是英國英語還是美國英語,使用

。

E[attr~=val] 匹配任何其屬性 attr 的值中包含完整單詞 val(由空格包圍)的元素 E。例如,.info[title~=more] 將匹配任何具有類 info 且標(biāo)題屬性包含單詞“more”的元素,例如“單擊此處了解更多信息”。

E[attr^=val] 匹配任何其屬性 attr 以值 val 開頭的元素 E。換句話說,val 與屬性值的開頭匹配。

E[attr$=val] 匹配任何其屬性 attr 以 val 結(jié)尾的元素 E。換句話說,val 與屬性值的結(jié)尾匹配。

E[attr=val] 匹配任何其屬性 attr 在任何位置與 val 匹配的元素 E。它類似於 E[attr~=val],只是 val 可以是單詞的一部分。使用與之前相同的示例,.fakelink[title=info] {} 將匹配任何具有類 fakelink 且標(biāo)題屬性包含字符串 info 的元素,例如“單擊此處了解更多信息”。

在這些屬性選擇器中,對(duì)於 HTML 中區(qū)分大小寫的 value,val 的值區(qū)分大小寫。例如,input[class^="btn"] 區(qū)分大小寫,因?yàn)轭惷麉^(qū)分大小寫,但 input[type="checkbox"] 不區(qū)分大小寫,因?yàn)?type 值在 HTML 中不區(qū)分大小寫。

如果值是字母數(shù)字的,則不必引用值,但有一些例外??兆址?、以數(shù)字開頭的字符串、兩個(gè)連字符和其他一些特殊情況需要用引號(hào)括起來。由於存在例外情況,因此養(yǎng)成始終為需要引號(hào)的情況包含引號(hào)的習(xí)慣是一個(gè)好主意。

在 CSS 選擇器級(jí)別 4 中,我們可以通過在結(jié)束括號(hào)之前包含一個(gè) i 來實(shí)現(xiàn)不區(qū)分大小寫,E[attr*=val i]。

CSS3 中關(guān)係選擇器和屬性選擇器的常見問題

CSS3 中關(guān)係選擇器和屬性選擇器有什麼區(qū)別?

CSS3 中的關(guān)係選擇器用於根據(jù)元素與 HTML 文檔中其他元素的關(guān)係來選擇元素。例如,子元素、後代、相鄰兄弟和通用兄弟選擇器都是關(guān)係選擇器的類型。另一方面,屬性選擇器用於根據(jù)元素的屬性或?qū)傩灾祦磉x擇元素。例如,您可以使用屬性選擇器選擇所有類型屬性為“text”的輸入元素。

如何在 CSS3 中使用子組合器?

CSS3 中的子組合器由“>”符號(hào)表示。它用於選擇特定元素的直接子元素。例如,如果您想選擇具有類“parent”的父元素的所有直接子 div 元素,則應(yīng)編寫如下 CSS:

.parent > div { /* CSS 屬性在此處 */ }

我可以在 CSS3 中使用多個(gè)屬性選擇器嗎?

是的,您可以在 CSS3 中使用多個(gè)屬性選擇器。這允許您選擇滿足多個(gè)屬性條件的元素。例如,如果您想選擇所有類型屬性為“text”且名稱屬性為“username”的輸入元素,則應(yīng)編寫如下 CSS:

input[type="text"][name="username"] { /* CSS 屬性在此處 */ }

CSS3 中相鄰兄弟組合器的用途是什麼?

CSS3 中的相鄰兄弟組合器由“ ”符號(hào)表示。它用於選擇直接位於另一個(gè)特定元素之後的元素,並且這兩個(gè)元素共享相同的父元素。例如,如果您想選擇直接位於 p 元素之後的 div 元素,則應(yīng)編寫如下 CSS:

p div { /* CSS 屬性在此處 */ }

如何在 CSS3 中選擇具有特定屬性值的元素?

要在 CSS3 中選擇具有特定屬性值的元素,請(qǐng)使用帶方括號(hào)的屬性選擇器、屬性名稱和值。例如,如果您想選擇所有類型屬性為“text”的輸入元素,則應(yīng)編寫如下 CSS:

input[type="text"] { /* CSS 屬性在此處 */ }

我可以在 CSS3 中組合關(guān)係選擇器和屬性選擇器嗎?

是的,您可以在 CSS3 中組合關(guān)係選擇器和屬性選擇器。這允許您根據(jù)元素與其他元素的關(guān)係及其屬性來選擇元素。例如,如果您想選擇具有類“form”的表單元素的所有直接子輸入元素,其中輸入元素的類型屬性為“text”,則應(yīng)編寫如下 CSS:

form.form > input[type="text"] { /* CSS 屬性在此處 */ }

CSS3 中的通用兄弟組合器是什麼?

CSS3 中的通用兄弟組合器由“~”符號(hào)表示。它用於選擇特定元素的兄弟元素,而不管它們?cè)?HTML 文檔中的順序如何。例如,如果您想選擇 p 元素的所有兄弟 div 元素,則應(yīng)編寫如下 CSS:

p ~ div { /* CSS 屬性在此處 */ }

如何在 CSS3 中選擇不具有特定屬性的元素?

要在 CSS3 中選擇不具有特定屬性的元素,請(qǐng)使用帶有屬性選擇器的 :not() 偽類。例如,如果您想選擇所有類型屬性不為“submit”的輸入元素,則應(yīng)編寫如下 CSS:

input:not([type="submit"]) { /* CSS 屬性在此處 */ }

我可以在 CSS3 中將關(guān)係選擇器與偽類結(jié)合使用嗎?

是的,您可以在 CSS3 中將關(guān)係選擇器與偽類結(jié)合使用。這允許您根據(jù)元素與其他元素的關(guān)係及其狀態(tài)來選擇元素。例如,如果您想選擇導(dǎo)航元素的所有直接子 a 元素,這些元素正在被懸停,則應(yīng)編寫如下 CSS:

nav > a:hover { /* CSS 屬性在此處 */ }

如何在 CSS3 中選擇包含特定值的特定屬性的元素?

要在 CSS3 中選擇包含特定值的特定屬性的元素,請(qǐng)使用帶方括號(hào)的屬性選擇器、屬性名稱和值以及 *= 運(yùn)算符。例如,如果您想選擇所有 href 屬性包含“example”的 a 元素,則應(yīng)編寫如下 CSS:

a[href*="example"] { /* CSS 屬性在此處 */ }

以上是CSS3中的關(guān)係和屬性選擇器的詳細(xì)內(nèi)容。更多資訊請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願(yuàn)投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請(qǐng)聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

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

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)程式碼編輯軟體(SublimeText3)

熱門話題

Laravel 教程
1597
29
PHP教程
1488
72
CSS教程,用於創(chuàng)建加載旋轉(zhuǎn)器和動(dòng)畫 CSS教程,用於創(chuàng)建加載旋轉(zhuǎn)器和動(dòng)畫 Jul 07, 2025 am 12:07 AM

創(chuàng)建CSS加載旋轉(zhuǎn)器的方法有三種:1.使用邊框的基本旋轉(zhuǎn)器,通過HTML和CSS實(shí)現(xiàn)簡(jiǎn)單動(dòng)畫;2.使用多個(gè)點(diǎn)的自定義旋轉(zhuǎn)器,通過不同延遲時(shí)間實(shí)現(xiàn)跳動(dòng)效果;3.在按鈕中添加旋轉(zhuǎn)器,通過JavaScript切換類來顯示加載狀態(tài)。每種方法都強(qiáng)調(diào)了設(shè)計(jì)細(xì)節(jié)如顏色、大小、可訪問性和性能優(yōu)化的重要性,以提升用戶體驗(yàn)。

解決CSS瀏覽器兼容性問題和前綴 解決CSS瀏覽器兼容性問題和前綴 Jul 07, 2025 am 01:44 AM

處理CSS瀏覽器兼容性和前綴問題需理解瀏覽器支持差異並合理使用廠商前綴。 1.了解常見問題如Flexbox、Grid支持不一,position:sticky失效,動(dòng)畫表現(xiàn)不同;2.查閱CanIuse確認(rèn)特性支持情況;3.正確使用-webkit-、-moz-、-ms-、-o-等廠商前綴;4.推薦使用Autoprefixer自動(dòng)添加前綴;5.安裝PostCSS並配置browserslist指定目標(biāo)瀏覽器;6.構(gòu)建時(shí)自動(dòng)處理兼容性;7.老項(xiàng)目可用Modernizr檢測(cè)特性;8.不必追求所有瀏覽器一致,確

使用CSS剪輯路徑創(chuàng)建自定義形狀 使用CSS剪輯路徑創(chuàng)建自定義形狀 Jul 09, 2025 am 01:29 AM

使用CSS的clip-path屬性可以裁剪元素為自定義形狀,如三角形、圓形缺口、多邊形等,無需依賴圖片或SVG。其優(yōu)勢(shì)包括:1.支持circle、ellipse、polygon等多種基本形狀;2.可響應(yīng)式調(diào)整,適配移動(dòng)端;3.易於動(dòng)畫化,可結(jié)合hover或JavaScript實(shí)現(xiàn)動(dòng)態(tài)效果;4.不影響佈局流,僅裁剪顯示區(qū)域。常見用法如圓形裁剪clip-path:circle(50pxatcenter)和三角形裁剪clip-path:polygon(50%0%,1000%,00%)。注意

顯示:內(nèi)聯(lián),顯示:塊和顯示:內(nèi)聯(lián)塊之間有什麼區(qū)別? 顯示:內(nèi)聯(lián),顯示:塊和顯示:內(nèi)聯(lián)塊之間有什麼區(qū)別? Jul 11, 2025 am 03:25 AM

Themaindifferencesbetweendisplay:inline,block,andinline-blockinHTML/CSSarelayoutbehavior,spaceusage,andstylingcontrol.1.Inlineelementsflowwithtext,don’tstartonnewlines,ignorewidth/height,andonlyapplyhorizo????ntalpadding/margins—idealforinlinetextstyling

造型與CSS不同訪問的鏈接 造型與CSS不同訪問的鏈接 Jul 11, 2025 am 03:26 AM

設(shè)置訪問過鏈接的樣式能提升用戶體驗(yàn),尤其在內(nèi)容密集型網(wǎng)站中幫助用戶更好導(dǎo)航。 1.使用CSS的:visited偽類可定義已訪問鏈接樣式,如顏色變化;2.注意瀏覽器出於隱私限制僅允許修改部分屬性;3.顏色選擇應(yīng)與整體風(fēng)格協(xié)調(diào),避免突兀;4.移動(dòng)端可能不顯示該效果,建議結(jié)合其他視覺提示如icon輔助標(biāo)識(shí)。

如何使用CSS創(chuàng)建響應(yīng)式圖像? 如何使用CSS創(chuàng)建響應(yīng)式圖像? Jul 15, 2025 am 01:10 AM

要使用CSS創(chuàng)建響應(yīng)式圖片,主要可通過以下方法實(shí)現(xiàn):1.使用max-width:100%和height:auto讓圖片在保持比例的同時(shí)自適應(yīng)容器寬度;2.結(jié)合HTML的srcset和sizes屬性智能加載適配不同屏幕的圖片源;3.利用object-fit和object-position控製圖片裁剪與焦點(diǎn)展示。這些方法共同確保圖片在不同設(shè)備上清晰、美觀地呈現(xiàn)。

什麼是常見的CSS瀏覽器不一致? 什麼是常見的CSS瀏覽器不一致? Jul 26, 2025 am 07:04 AM

不同瀏覽器對(duì)CSS解析存在差異,導(dǎo)致顯示效果不一致,主要包括默認(rèn)樣式差異、盒模型計(jì)算方式、Flexbox和Grid佈局支持程度及某些CSS屬性行為不一致。 1.默認(rèn)樣式處理不一致,解決方法是使用CSSReset或Normalize.css統(tǒng)一初始樣式;2.舊版IE的盒模型計(jì)算方式不同,建議統(tǒng)一使用box-sizing:border-box;3.Flexbox和Grid在邊緣情況或舊版本中表現(xiàn)有差異,應(yīng)多測(cè)試並使用Autoprefixer;4.某些CSS屬性行為不一致,需查閱CanIuse並提供降級(jí)

揭開CSS單元的神秘面紗:PX,EM,REM,VW,VH比較 揭開CSS單元的神秘面紗:PX,EM,REM,VW,VH比較 Jul 08, 2025 am 02:16 AM

CSS單位的選擇取決於設(shè)計(jì)需求和響應(yīng)式要求。 1.px用於固定尺寸,適合精確控制但缺乏彈性;2.em是相對(duì)單位,受父元素影響易導(dǎo)致級(jí)聯(lián)問題,rem則基於根元素更穩(wěn)定,適合全局縮放;3.vw/vh基於視口大小,適合響應(yīng)式設(shè)計(jì),但需注意極端屏幕下的表現(xiàn);4.選擇時(shí)應(yīng)根據(jù)是否需要響應(yīng)式調(diào)整、元素層級(jí)關(guān)係及視口依賴程度來決定,合理搭配使用可提升佈局靈活性與維護(hù)性。

See all articles