搜尋
首頁web前端css教學深入了解CSS偽類選擇器的用法(程式碼範例)

這篇文章帶給大家的內容是關於深入了解偽類選擇器的用法(程式碼範例),有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

前言

 過去零零星星地了解和使用:link、::after和content等偽類、偽元素選擇器,最近看書時發現這方面有所欠缺,於是決定稍微深入學習一下,以下為偽類部分的整理。

偽類

 偽類選擇器實質上是讓設計師可以依照元素特定的狀態,設定不同的視覺效果。具體有:link、:visited、:hover、:active、:focus、:focus-within、:target、:root和:checked。

HTMLAnchorElement的4大經典偽類別

:link,用於設定連結初始狀態時的樣式;

:visited,用於設定連結被點擊過後的樣式;

:hover,用於設定滑鼠懸停在連結上方時,連結的樣式;

:active,用來設定滑鼠按鍵按下,但未釋放時,連結的樣式。

想必各位都跟我一樣,最初接觸到的就是上述4個偽類了吧? !而且還死機硬背它們的設定順序(LVAH)吧,哈哈。

設定目前目標元素樣式

 還記得URL中的井號嗎?從井號(#)開始到URL的結尾稱為URL的hash或fragment,用來定位頁內某項資源。假設現在頁面存在

Target

的元素,那麼只要地址列輸入#title瀏覽器就會不斷滾動(滾動不一定存在補間動效)直到元素h3#title位於可視區的特定位置。 (注意:請不要和UI Routing混為一談)
 而上述這個被定位的頁面資源,被稱為目標元素或當前活動元素!可透過:target設定其樣式。
 相容性:IE9開始支援。

範例:

// 当前URL为http://foo.com#1
:target {
    color: red;
}
.title{
    color: blue;
    
    &:target{
        border: solid 1px red;
    }
}

.title{I'm not target element.}
.title#1{Yes, I'm.}

設定元素獲得焦點時的樣式

:focus用於設定元素處於focus狀態下的樣式。
相容性:IE8開始支援。
那麼哪些元素支援focus狀態呢?那要先弄清楚透過哪些操作可能實現focus。
它們分別是:

滑鼠點擊;

Tab鍵;

#透過JavaScript的HTMLElement.prototype.focus()方法。

那麼傳統上支援focus狀態的元素必定是a、button、input、select和textareas.
而HTML5中增加當元素設定了contenteditable或tabindex屬性時,該元素支援focus狀態。
也就是符合以下選擇器的元素都支援focus狀態。

a,button,input,select,textarea,[contenteditable],[tabindex]

注意:若tabindex屬性值小於0,則無法透過Tab鍵取得焦點。但可以透過滑鼠點擊 或 腳本時元素來獲得焦點。

JS取得目前得到焦點的元素

/* 
 * 加载完成时默认返回body
 * 若某元素获得焦点时,则返回该元素
 */
document.activeElement :: HTMLElement

另外還有一個讓人誤會的屬性

// 用于检测文档是否得到焦点,即用户是否正在与页面交互
// 页面仅仅位于屏幕可视区域,而用户没有与之交互时返回false。
document.hasFocus :: Void -> Boolean

設定子元素獲得焦點時,該元素的樣式

:focus-within,用於設定當子元素處於focus狀態時,該元素的樣式。
相容性:Chrome63開始支援。

範例:二次確認密碼時,密碼框高亮

.form-control{
  &:focus-within > input{
    &:focus {
      border: solid 1px skyblue;
    }
    
    &:not(:focus){
      border: solid 1px orange;
    }
  }
}

.form-control>input.pwd[type=password]+input.confirm-pwd[type=password]

其他

:root,用於設定元素的樣式,從IE9開始支援。

:checked,用於設定單選和複選控制項被選取的樣式,從IE9開始支援。結合偽元素::before和content屬性可以實現靈活高效的自訂單選和複選控制項。

:empty,用來設定沒有子節點的元素的樣式。 p{ }為存在TEXT_NODE子節點的元素,而p{}則為沒有子節點的元素。

:not,作為謂語表達取反的語意。

:placeholder-shown,用於設定元素placeholder顯示時的樣式。

以上是深入了解CSS偽類選擇器的用法(程式碼範例)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
@rules具有多少特異性,例如@keyframes和@media?@rules具有多少特異性,例如@keyframes和@media?Apr 18, 2025 am 11:34 AM

前幾天我得到了這個問題。我的第一個想法是:奇怪的問題!特異性是關於選擇者的,而在符號不是選擇器,那麼...無關緊要?

您可以嵌套@Media和@support查詢嗎?您可以嵌套@Media和@support查詢嗎?Apr 18, 2025 am 11:32 AM

是的,您可以,而且它並不重要。不需要CSS預處理器。它在常規CSS中起作用。

快速吞噬緩存破壞快速吞噬緩存破壞Apr 18, 2025 am 11:23 AM

您應該肯定會在CSS和JavaScript(以及圖像和字體以及其他內容)等資產上設置遙遠的高速緩存標頭。告訴瀏覽器

尋找可以監視CSS質量和復雜性的堆棧尋找可以監視CSS質量和復雜性的堆棧Apr 18, 2025 am 11:22 AM

許多開發人員寫瞭如何維護CSS代碼庫的文章,但並沒有很多關於如何測量該代碼庫質量的文章。當然,我們有

數據學家用於建議不執行值的值數據學家用於建議不執行值的值Apr 18, 2025 am 11:08 AM

您是否曾經有一種需要接受簡短而任意的文本的表格?喜歡名字或其他。那完全是用的。有很多

蘇黎世的最初會議蘇黎世的最初會議Apr 18, 2025 am 11:03 AM

我很高興能前往瑞士蘇黎世參加前界(Love the Name and URL!)。我以前從未去過瑞士,所以我很興奮

使用CloudFlare工人建立全棧無服務器應用程序使用CloudFlare工人建立全棧無服務器應用程序Apr 18, 2025 am 10:58 AM

我在軟件開發方面最喜歡的發展之一是無服務器的出現。作為一個傾向於陷入細節的開發人員

在NUXT應用程序中創建動態路由在NUXT應用程序中創建動態路由Apr 18, 2025 am 10:53 AM

在這篇文章中,我們將使用我構建和部署的電子商務商店演示來進行Netlify,以展示如何為傳入數據製作動態路線。這是一個公平的

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 無盡。

熱工具

DVWA

DVWA

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

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具