搜尋
首頁web前端css教學偽級 - 基礎知識

Pseudo-classes - The Basics

(基於Alexis Goldstein, Louis Lazaris和Estelle Weyl的《HTML5 & CSS3 for the Real World》改編)

核心要點

CSS偽類用於定義元素的特殊狀態,包括結構性、用戶操作、輸入和否定偽類等多種類型。它們可以根據元素在文檔樹中的位置、用戶交互、表單元素狀態或與特定選擇器不匹配的元素來設置元素樣式。

某些偽類可能存在安全問題,例如:visited偽類,攻擊者可以利用它檢查用戶的瀏覽歷史記錄。現代瀏覽器限制了可應用於:visited的樣式以防止此問題。為提高可訪問性,建議在包含:hover的地方添加:focus,因為並非所有訪問者都使用鼠標瀏覽網站。

雖然大多數現代瀏覽器都支持所有CSS偽類,但某些舊版瀏覽器可能不支持某些偽類,例如:nth-child():nth-last-child()。像Selectivizr這樣的JavaScript庫可用於在Internet Explorer等缺乏支持的瀏覽器中定位這些偽類。

CSS偽類

您可能已經熟悉一些用戶交互偽類,即:link:visited:hover:active:focus

重要提示:關鍵要點

:visited偽類可能存在安全問題,因此瀏覽器不支持在已訪問鏈接上應用所有CSS屬性。如果沒有這些限制,惡意網站可以對已訪問鏈接應用樣式(例如,為每個已訪問鏈接應用唯一的背景圖像)來檢查用戶是否訪問過熱門網站或銀行。這允許攻擊者未經許可查看用戶的瀏覽歷史記錄。因此,現代瀏覽器限制了可應用於:visited的樣式。規范明確允許這些更改,指出:用戶代理(UA)可以將所有鏈接視為未訪問鏈接,或實施其他措施以在呈現已訪問和未訪問鏈接的不同方式的同時保護用戶的隱私。為提高可訪問性,請在包含:hover的地方添加:focus,因為並非所有訪問者都使用鼠標瀏覽您的網站。 :hover可以應用於頁面上的任何元素,而不僅僅是鏈接和表單控件。 :focus:active與鏈接、表單控件、可編輯內容元素以及任何具有tabindex屬性的元素相關。

雖然您可能已經使用這些基本的偽類一段時間了,但還有許多其他可用的偽類。其中一些偽類已在規範中存在多年,但在瀏覽器開始支持使它們更相關的新的HTML5表單屬性之前,並未得到支持(或普遍了解)。以下偽類根據屬性、用戶交互和表單控件狀態匹配元素:

  • :enabled:啟用的用戶界面元素,基本上是支持disabled屬性但當前未應用該屬性的任何表單控件。
  • :disabled:相反,禁用的用戶界面元素:任何支持disabled屬性並當前已應用該屬性的表單控件。
  • :checked:已選中或勾選的單選按鈕或複選框。
  • :indeterminate:既未選中也未取消選中的表單元素。例如,如果您勾選“全選”複選框以選擇一組複選框,然後取消選擇該組中的一些但並非所有復選框,則可以將“全選”設置為不確定狀態(使用JavaScript)以指示它既未選中也未取消選中。
  • :target:此選擇器選出當前活動頁面內錨點的目標元素。這聽起來比實際情況復雜:您已經知道,您可以通過在目標的ID之前使用#字符來創建指向頁面內錨點的鏈接。例如,您的頁面中可能有一個“跳至內容”鏈接,單擊該鏈接後,將跳轉到ID為“content”的元素。這會將地址欄中的URL更改為thispage.html#content,而:target選擇器現在匹配文檔中ID為“content”的元素。這就像您臨時包含了選擇器#content一樣。我們說“臨時”,是因為一旦用戶單擊不同的錨點,:target將匹配新的目標。
  • :default:應用於在一組類似元素中為默認值的的一個或多個UI元素。例如,在頁面加載時已選中的一組同名單選按鈕中的一個單選按鈕,在同名組中的另一個單選按鈕被選中後,將繼續匹配:default。同樣,頁面加載時已選中的複選框在取消選中後將繼續匹配:default
  • :valid:根據類型、模式或其他輸入屬性(正如我們在第4章中討論的那樣)有效的元素。
  • :invalid:空必需元素和無法滿足類型或模式屬性定義的要求的元素。
  • :in-range:具有範圍限制且值在這些限制內的元素。例如,這適用於具有minmax屬性的日期/時間、數字和範圍輸入類型。當值為null時,它是:in-range
  • :out-of-range:in-range的反義詞:其值超出其範圍限制的元素。缺少的值不在範圍內,因為它們是空的。
  • :required:已設置:required屬性的表單控件。
  • :optional:所有沒有:required屬性的表單控件。
  • :read-only:用戶無法更改其內容的元素。這大多數是除設置了contenteditable屬性的元素和表單字段以外的元素。
  • :read-write:用戶可以更改其內容的元素,例如contenteditable組件和可寫輸入字段。

在支持其表單控件中屬性的瀏覽器中,對這些屬性的瀏覽器支持是完整的;換句話說,支持requiredpattern的瀏覽器也支持相關的:valid:invalid偽類。 IE8及更早版本不支持:checked:enabled:disabled:target。好消息是IE9確實支持這些選擇器,但不支持用戶界面選擇器。 IE10和IE11支持:indeterminate:required:optional,但不支持:default:in-range:out-of-range:read-only:read-write。雖然仍然缺乏支持,但像Selectivizr這樣的JavaScript庫可以幫助在Internet Explorer中定位這些偽類。

CSS偽類的常見問題解答 (FAQs)

(此處省略了FAQs部分,因為篇幅過長,且與偽原創目標不符。 可以根據需要選擇性地保留或改寫部分FAQs,並保持與原文意思一致。)

以上是偽級 - 基礎知識的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
軌道力學(或我如何優化CSS KeyFrames動畫)軌道力學(或我如何優化CSS KeyFrames動畫)May 09, 2025 am 09:57 AM

重構自己的代碼看起來是什麼樣的?約翰·瑞亞(John Rhea)挑選了他寫的一個舊的CSS動畫,並介紹了優化它的思維過程。

CSS動畫:很難創建它們嗎?CSS動畫:很難創建它們嗎?May 09, 2025 am 12:03 AM

CSSanimationsarenotinherentlyhardbutrequirepracticeandunderstandingofCSSpropertiesandtimingfunctions.1)Startwithsimpleanimationslikescalingabuttononhoverusingkeyframes.2)Useeasingfunctionslikecubic-bezierfornaturaleffects,suchasabounceanimation.3)For

@KeyFrames CSS:最常用的技巧@KeyFrames CSS:最常用的技巧May 08, 2025 am 12:13 AM

@keyframesispopularduetoitsversatoryand and powerincreatingsmoothcsssanimations.keytricksinclude:1)definingsmoothtransitionsbetnestates,2)使用AnimatingMultatingMultationMultationProperPertiessimultane,3)使用使用4)使用BombingeNtibalibility,4)使用CombanningWiThjavoFofofofoftofofo

CSS計數器:自動編號的綜合指南CSS計數器:自動編號的綜合指南May 07, 2025 pm 03:45 PM

CSSCOUNTERSAREDOMANAGEAUTOMANAMBERINGINWEBDESIGNS.1)他們可以使用forterablesofcontents,ListItems,and customnumbering.2)AdvancedsincludenestednumberingSystems.3)挑戰挑戰InclassINCludeBrowsEccerCerceribaliblesibility andperformiballibility andperformissises.4)創造性

使用捲軸驅動動畫的現代滾動陰影使用捲軸驅動動畫的現代滾動陰影May 07, 2025 am 10:34 AM

使用滾動陰影,尤其是對於移動設備,是克里斯以前涵蓋的一個微妙的UX。傑夫(Geoff)涵蓋了一種使用動畫限制屬性的新方法。這是另一種方式。

重新訪問圖像圖重新訪問圖像圖May 07, 2025 am 09:40 AM

讓我們快速進修。圖像地圖一直返回到HTML 3.2,首先是服務器端地圖,然後使用映射和區域元素通過圖像上的單擊區域定義了可單擊區域。

DEV狀態:每個開發人員的調查DEV狀態:每個開發人員的調查May 07, 2025 am 09:30 AM

開發委員會調查現已開始參與,並且與以前的調查不同,它涵蓋了除法:職業,工作場所,以及健康,愛好等。 

什麼是CSS網格?什麼是CSS網格?Apr 30, 2025 pm 03:21 PM

CSS網格是創建複雜,響應式Web佈局的強大工具。它簡化了設計,提高可訪問性並提供了比舊方法更多的控制權。

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脫衣器

Video Face Swap

Video Face Swap

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

熱工具

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

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

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

DVWA

DVWA

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