CSS :has() 偽類:強大的動態樣式選擇器
CSS 不斷發展,使開發人員能夠輕鬆建立動態、直覺且具有視覺吸引力的網頁。其中一個增強功能是現代 CSS 中引入的 :has() 偽類。這個偽類帶來了父級感知選擇功能,讓您可以根據子元素或兄弟元素的存在或狀態有條件地應用樣式。
本文透過範例解釋了 :has() 偽類,以展示其靈活性和強大功能。
什麼是 :has() 偽類?
:has() 偽類通常被稱為“父選擇器”,因為它允許您根據元素的子元素、兄弟元素或後代元素設定樣式。
selector:has(selectorList)
- 選擇器是規則適用的主要元素。
- selectorList 是條件,可以包含子元素、兄弟元素或與主元素相關的其他元素。
主要特點
- 父級意識:樣式根據其後代或兄弟元素應用於元素。
- 靈活的條件:與 、 ~ 和 > 等組合符配合使用對於兄弟姊妹和孩子的關係。
- 改進的互動性:可用於在不依賴 JavaScript 的情況下建立動態佈局或效果。
實際範例:使用 :has() 根據其兄弟姐妹來設計盒子的樣式
body { font-family: sans-serif; } .box { width: 50px; height: 40px; background-color: red; margin: 5px; } .border { border: 2px solid black; } .circle { width: 40px; height: 40px; background-color: blue; border-radius: 25px; } /* Highlighting boxes that are followed by a circle */ .box:has(+ .circle) { width: 80px; height: 80px; }
<!DOCTYPE html> <html> <head> <title>CSS :has() Example</title> <meta charset="UTF-8" /> <link rel="stylesheet" href="./styles.css" /> </head> <body> <div> <p><strong>Explanation</strong></p> <p><em>Basic Styles</em><br> The .box class defines small red rectangles with a margin.<br> The .circle class creates blue circular elements.</p> <p>Dynamic Sizing Using :has():<br> The rule .box:has(+ .circle) applies styles to any .box element that is immediately followed by a .circle.<br> This rule changes the dimensions of such .box elements to 80px by 80px, making them stand out.</p> <p><em>Visual Output</em></p> <p>Initially, the boxes are uniform in size.<br> The .box element immediately preceding a .circle grows larger due to the :has() rule.</p> <p><img src="/static/imghw/default1.png" data-src="https://img.php.cn/upload/article/000/000/000/173495132393104.jpg" class="lazy" alt="CSS :has() Pseudo-Class: A Powerful Selector for Dynamic Styling"></p> <h2> Use Cases for :has() </h2> <p>The :has() pseudo-class is versatile and can be applied in numerous scenarios:</p> <h3> 1. <strong>Interactive Layouts</strong> </h3> <p>Style a parent element based on the presence of a specific child or sibling element, e.g., highlighting a card if it contains a button.<br> </p> <pre class="brush:php;toolbar:false">.card:has(button) { border: 2px solid green; }
2. 動態導航選單
將樣式套用到父級
li:has(ul) { font-weight: bold; }
3. 表單驗證
突出顯示基於同級或父元素的無效輸入欄位。
.form-group:has(input:invalid) { border-color: red; }
4. 自訂兄弟姊妹關係
根據其相鄰同級元素設定元素的樣式。
h1:has(+ p) { margin-bottom: 10px; }
:has() 的優點
-
提高可讀性:
- 減少了對複雜 JavaScript 偵測和操作 DOM 的需求。
-
提升效能:
- 與類似效果的 JavaScript 解決方案相比,輕量級且有效率。
-
簡化 CSS:
- 為複雜關係啟用聲明式樣式,盡量減少額外的類別或屬性。
瀏覽器支援
到目前為止,大多數現代瀏覽器都支援 :has() 偽類,包括:
- Chrome:105
- 邊緣:105
- Safari:15.4
- Firefox:正在考慮支援。
對於較舊的瀏覽器,您可能需要後備或填充。
結論
:has() 偽類是現代 CSS 中的遊戲規則改變者,帶來了期待已久的父選擇器功能。憑藉其根據元素關係有條件地設定元素樣式的能力,它簡化了 CSS 程式碼,增強了動態樣式,並減少了對 JavaScript 進行 DOM 操作的依賴。
探索專案中的 :has() 偽類,並為創意和高效的網頁設計解鎖新的可能性!
以上是CSS :has() 偽類:強大的動態樣式選擇器的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

您是否曾經在項目上需要一個倒計時計時器?對於這樣的東西,可以自然訪問插件,但實際上更多

格子呢是一塊圖案布,通常與蘇格蘭有關,尤其是他們時尚的蘇格蘭語。在Tartanify.com上,我們收集了5,000多個格子呢
