首頁 > web前端 > css教學 > 為什麼 CSS `:before` 不能在內聯 SVG 元素上運作?

為什麼 CSS `:before` 不能在內聯 SVG 元素上運作?

Mary-Kate Olsen
發布: 2024-11-25 18:51:15
原創
322 人瀏覽過

Why Doesn't CSS `:before` Work on Inline SVG Elements?

CSS :before 在內聯SVG

簡介

使用:before 和:after 偽元素設定內聯SVG 元素的樣式是Web 中的常見任務發展。但是,了解對替換元素(包括 SVG)施加的限制非常重要。

問題

在給定的程式碼範例中,套用於 SVG 元素的 :before 樣式未反映出來,表示產生的內容可能不適用於 SVG。

替換的元素和產生的內容

內聯 SVG 是被視為替換元素,這意味著它不是內容流的一部分,而是取代父元素。另一方面,產生的內容是使用 :before 和 :after 等偽元素插入到文檔樹中的內容。

CSS 規範

CSS 中產生內容的規範定義在「CSS3 產生並取代內容模組。」根據此文檔,取代元素內不允許產生內容。這解釋了範例中 SVG 上的 :before 樣式失敗的原因。

可能的解決方案::outside 偽元素

雖然替換元素中不支援產生的內容,但 W3C 文件引用提出了一個解決方案::outside 偽元素。此偽元素將產生的內容放置在替換元素之外,有效地繞過了限制。不幸的是,目前對 :outside 的支援是有限的。

結論

由於對替換元素的限制,使用 :before 或 :after 設計內嵌 SVG 樣式是不可能的。若要解決此問題,請探索替代方法,例如使用類別或屬性來動態新增具有所需樣式的元素。

以上是為什麼 CSS `:before` 不能在內聯 SVG 元素上運作?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板