CSS 不斷發展,使開發人員能夠輕鬆建立動態、直覺且具有視覺吸引力的網頁。其中一個增強功能是現代 CSS 中引入的 :has() 偽類。這個偽類帶來了父級感知選擇功能,讓您可以根據子元素或兄弟元素的存在或狀態有條件地應用樣式。
本文透過範例解釋了 :has() 偽類,以展示其靈活性和強大功能。
:has() 偽類通常被稱為“父選擇器”,因為它允許您根據元素的子元素、兄弟元素或後代元素設定樣式。
selector:has(selectorList)
主要特點
實際範例:使用 :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="https://img.php.cn/upload/article/000/000/000/173495132393104.jpg" 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; }
將樣式套用到父級
li:has(ul) { font-weight: bold; }
突出顯示基於同級或父元素的無效輸入欄位。
.form-group:has(input:invalid) { border-color: red; }
根據其相鄰同級元素設定元素的樣式。
h1:has(+ p) { margin-bottom: 10px; }
提高可讀性:
提升效能:
簡化 CSS:
到目前為止,大多數現代瀏覽器都支援 :has() 偽類,包括:
對於較舊的瀏覽器,您可能需要後備或填充。
:has() 偽類是現代 CSS 中的遊戲規則改變者,帶來了期待已久的父選擇器功能。憑藉其根據元素關係有條件地設定元素樣式的能力,它簡化了 CSS 程式碼,增強了動態樣式,並減少了對 JavaScript 進行 DOM 操作的依賴。
探索專案中的 :has() 偽類,並為創意和高效的網頁設計解鎖新的可能性!
以上是CSS :has() 偽類:強大的動態樣式選擇器的詳細內容。更多資訊請關注PHP中文網其他相關文章!