
- CSS 教程
- CSS - 首頁
- CSS - 路線圖
- CSS - 簡介
- CSS - 語法
- CSS - 選擇器
- CSS - 包含
- CSS - 計量單位
- CSS - 顏色
- CSS - 背景
- CSS - 字型
- CSS - 文字
- CSS - 圖片
- CSS - 連結
- CSS - 表格
- CSS - 邊框
- CSS - 塊級邊框
- CSS - 內聯邊框
- CSS - 外邊距
- CSS - 列表
- CSS - 內邊距
- CSS - 游標
- CSS - 輪廓
- CSS - 尺寸
- CSS - 捲軸
- CSS - 內聯塊
- CSS - 下拉選單
- CSS - 可見性
- CSS - 溢位
- CSS - 清除浮動
- CSS - 浮動
- CSS - 箭頭
- CSS - 調整大小
- CSS - 引號
- CSS - 順序
- CSS - 位置
- CSS - 連字元
- CSS - 懸停
- CSS - 顯示
- CSS - 聚焦
- CSS - 縮放
- CSS - 平移
- CSS - 高度
- CSS - 連字元字元
- CSS - 寬度
- CSS - 不透明度
- CSS - Z-Index
- CSS - 底部
- CSS - 導航欄
- CSS - 覆蓋層
- CSS - 表單
- CSS - 對齊
- CSS - 圖示
- CSS - 圖片庫
- CSS - 註釋
- CSS - 載入器
- CSS - 屬性選擇器
- CSS - 組合器
- CSS - 根元素
- CSS - 盒模型
- CSS - 計數器
- CSS - 剪下
- CSS - 書寫模式
- CSS - Unicode-bidi
- CSS - min-content
- CSS - 全部
- CSS - 內嵌
- CSS - 隔離
- CSS - 滾動溢位
- CSS - Justify Items
- CSS - Justify Self
- CSS - Tab Size
- CSS - 指標事件
- CSS - Place Content
- CSS - Place Items
- CSS - Place Self
- CSS - 最大塊尺寸
- CSS - 最小塊尺寸
- CSS - 混合模式
- CSS - 最大內聯尺寸
- CSS - 最小內聯尺寸
- CSS - 偏移量
- CSS - 口音顏色
- CSS - 使用者選擇
- CSS 高階
- CSS - 網格
- CSS - 網格佈局
- CSS - Flexbox
- CSS - 可見性
- CSS - 定位
- CSS - 層
- CSS - 偽類
- CSS - 偽元素
- CSS - @規則
- CSS - 文字效果
- CSS - 分頁媒體
- CSS - 列印
- CSS - 佈局
- CSS - 驗證
- CSS - 圖片精靈
- CSS - 重要性
- CSS - 資料型別
- CSS3 教程
- CSS3 - 教程
- CSS - 圓角
- CSS - 邊框圖片
- CSS - 多重背景
- CSS - 顏色
- CSS - 漸變
- CSS - 盒陰影
- CSS - 盒裝飾中斷
- CSS - 游標顏色
- CSS - 文字陰影
- CSS - 文字
- CSS - 2D 變換
- CSS - 3D 變換
- CSS - 過渡
- CSS - 動畫
- CSS - 多列
- CSS - 盒尺寸
- CSS - 工具提示
- CSS - 按鈕
- CSS - 分頁
- CSS - 變數
- CSS - 媒體查詢
- CSS - 函式
- CSS - 數學函式
- CSS - 遮罩
- CSS - 形狀
- CSS - 樣式圖片
- CSS - 特異性
- CSS - 自定義屬性
- CSS 響應式
- CSS RWD - 簡介
- CSS RWD - 視口
- CSS RWD - 網格檢視
- CSS RWD - 媒體查詢
- CSS RWD - 圖片
- CSS RWD - 影片
- CSS RWD - 框架
- CSS 工具
- CSS - PX 到 EM 轉換器
- CSS - 顏色選擇器和動畫
- CSS 資源
- CSS - 有用資源
- CSS - 討論
CSS 偽類 - :has()
CSS :has() 偽類根據元素是否包含匹配特定選擇器的子元素來表示該元素。
語法
:has(<relative-selector-list>) { /* ... */ }
:has() 偽類不受 Firefox 瀏覽器支援。
要點
當瀏覽器不支援 :has() 偽類時,只有在 :has() 用於 :is() 或 :where() 選擇器內部時,整個選擇器塊才會生效。
您不能在另一個 :has() 選擇器內部使用 :has() 選擇器,因為許多偽元素的存在取決於其父元素的樣式。允許您使用 :has() 選擇這些偽元素會導致迴圈查詢。
偽元素不能用作 :has() 偽類中的選擇器或錨點。
CSS :has() - 相鄰兄弟組合器
以下是如何使用 :has() 函式選擇所有緊跟在 h3 元素之後的 h2 元素的示例 -
<html> <head> <style> div { background-color: pink; } h2:has(+ h3) { margin: 0 0 50px 0; } </style> </head> <body> <p>You can see it adds bottom margin to h2 elements immediately followed by an h3 element.</p> <div> <h2>Tutorialspoint</h2> <h3>CSS Pseudo-class - :has()</h3> <p>Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old.</p> </div> </body> </html>
CSS :has() - 與 :is() 偽類一起使用
CSS 選擇器 :is(h1, h2, h3) 選擇所有 h1、h2 和 h3 元素。然後,:has() 偽類選擇這些元素中任何具有 h2、h3 或 h5 元素作為其下一個兄弟元素的元素,如下所示 -
<html> <head> <style> div { background-color: pink; } :is(h1, h2, h3):has(+ :is(h2, h3, h5)) { margin-bottom: 50px ; } </style> </head> <body> <p>You can see it adds bottom margin to h2 elements immediately followed by an h3 element and h3 element followed by immediately h4.</p> <div> <h2>Tutorialspoint</h2> <h3>CSS Pseudo-class :has()</h3> <h5>with :is() Pseudo-class</h5> <p>Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old.</p> </div> </body> </html>
CSS :has() - 邏輯運算
:has(video, audio) 選擇器檢查元素內部是否存在影片或音訊元素。
:has(video):has(audio) 選擇器檢查元素是否同時包含影片和音訊元素。
以下是如何使用 :has() 偽類向 body 元素新增紅色邊框和 50% 寬度(如果它包含影片或音訊元素)的示例 -
<html> <head> <style> video { width: 50%; margin: 50px; } body:has(video, audio) { border: 3px solid red; } </style> </head> <body> <video controls src="images/boat_video.mp4"></video> </body> </html>
正則表示式和 :has() 類比
CSS :has() 選擇器和帶有前瞻斷言的正則表示式在以下方面具有相似性:它們使您能夠根據特定模式定位元素(或字串),而無需實際選擇匹配該模式的元素(或字串)。
特性 | 描述 |
---|---|
正向先行斷言 (?=pattern) | CSS 選擇器 和正則表示式 abc(?=xyz) 都允許您根據另一個元素緊隨其後的情況選擇一個元素,而無需實際選擇該元素本身。 |
負向先行斷言 (?!pattern) | CSS 選擇器 .abc:has(+ :not(.xyz)) 類似於正則表示式 abc(?!xyz)。兩者僅在 .abc 後面沒有 .xyz 時才選擇 .abc。 |
廣告