如何使用CSS 根據其他元素的狀態選擇元素
簡介
對特定元素一直是CSS 的一個基本面向。但是,當我們需要根據頁面中其他元素的狀態來設定元素樣式時,就會出現複雜性。本文探討了目前 CSS 選擇器的局限性,並介紹了即將推出的標準中的潛在解決方案。
目前 CSS 選擇器的限制
CSS 選擇器在選擇元素方面有一些限制基於他人的狀態。首先,它們無法使用父選擇器或前同級選擇器直接存取元素的狀態。其次,它們只能將單一元素定位為選擇器的主題,從而阻止我們根據條件將樣式套用到多個元素。
範例:根據懸停狀態定位元素
假設一個頁面上有多個部分。每個部分都包含一個帶有表示其狀態的「完成」資料屬性的 div。每當具有「finished」屬性的 div 懸停時,我們希望為下一節中的閃爍和旋轉元素添加彩色邊框。一個簡單的 CSS 選擇器是:
section:hover + section .blink, section:hover + section .spin { border: 1px solid red; }
但是,這不起作用,因為 CSS 沒有父選擇器來定位第一部分中的 div。
潛在的解決方案:Selectors 4 和:has()
即將推出的Selectors 4 草案引入了偽類稱為:has() 解決了這個問題。 :has() 讓我們可以選擇具有特定後代的元素。它需要一個與使用它的元素的後代相符的相對選擇器參數。
使用 :has() 解決上述問題的解決方案是:
section:has(div[data-status~=finished]) + section div:matches(.blink, .spin) { border: 1px solid red; }
這裡,: has() 確保選擇器僅定位包含狀態為「完成」的 div 的部分。它還將子組合器與 :matches() 結合起來,以在後續部分中針對閃爍和旋轉元素。
結論
雖然目前的CSS 選擇器在選擇方面存在限制元素基於其他元素的狀態,Selectors 4 中即將推出的:has() 偽類提供了一個潛在的解決方案。它增強了選擇器語法,允許更靈活和有條件地定位元素。
以上是CSS 選擇器可以根據其他元素的狀態來定位元素嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

文章討論了CSS FlexBox,這是一種佈局方法,用於有效地對齊和分佈響應設計中的空間。它說明了FlexBox用法,將其與CSS網格進行了比較,並詳細瀏覽了瀏覽器支持。

本文討論了使用CSS創建響應網站的技術,包括視口元標籤,靈活的網格,流體媒體,媒體查詢和相對單元。它還涵蓋了使用CSS網格和Flexbox一起使用,並推薦CSS框架

本文討論了CSS盒裝屬性,該屬性控制了元素維度的計算方式。它解釋了諸如Content-Box,Border-Box和Padding-Box之類的值,以及它們對佈局設計和形式對齊的影響。


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

Atom編輯器mac版下載
最受歡迎的的開源編輯器

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

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

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具