2 回答

TA貢獻1808條經驗 獲得超4個贊
將任何有效的 CSS 規則應用于任何 HTML 元素仍然合法嗎?
是的,但如果它不受支持或不適用于此類元素,您的瀏覽器可能會忽略它。
而且,任何規則都可以繼承嗎?
是的,但您應該注意,繼承會考慮計算值,這可能會產生影響:
繼承 CSS 關鍵字使指定它的元素從其父元素獲取屬性的計算值。它可以應用于任何CSS屬性,包括所有的CSS簡寫。
我沒有與 SVG 相關的簡單示例,但這是另一個示例:
.box {
? display:inline-block;
? float:left;
? width:200px;
? height:200px;
? border:1px solid red;
}
.box > div {
? display:inherit;
? border:1px solid green;
}
<div class="box">
? <div>text</div>
</div>
注意內部 div 的displayequal toblock和 notinline-block因為 float 會強制顯示的計算值被 block for.box
為了避免處理繼承問題,您可以考慮適合您情況的 CSS 變量:
.icon {
? stroke: var(--s);
? fill: var(--f);
}
.button {
? --s: #FFF;
? --f: #999;
}
<button class="button">
? <svg class="icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 18">
? ? <g stroke-width="2" transform="translate(1 1)">
? ? ? <path d="M14 2L2 14"/>
? ? ? <circle cx="8" cy="8" r="8"/>
? ? </g>
? </svg>
? <span>My button</span>
</button>

TA貢獻1799條經驗 獲得超8個贊
相同的級聯和繼承規范指出:
即使屬性不適用(如“適用于”行所定義),計算值也存在。但是,某些屬性可能會根據屬性是否適用于元素來更改確定計算值的方式。
因此,每個元素的每個屬性都會有一個計算值,但可能不使用它(所謂的使用值,即計算值之后的下一步,是無)。計算出的值將被繼承。
這對于我的 SVG 按鈕示例意味著什么:
我絕對被允許設置
stroke
和。它在渲染自身時會忽略此屬性,但如果需要,會將其傳遞給其子級。fill
<button>
默認情況下,子 SVG 將繼承這些屬性(我什至不需要明確指定)。
stroke
和 的計算值fill
沒有任何警告,因此我可以期望繼承正確的顏色(確實如此!)。
- 2 回答
- 0 關注
- 123 瀏覽
添加回答
舉報