为什么svg元素不尊重CSS的“底部”,“顶部”,“左侧”,“右侧”属性?

mhe*_*ens 4 html css size svg

我有时觉得方便给一个元素的大小的方面bottomtopleftright性能,而不是使用widthheight。例如,这是此处接受的答案:

CSS 100%高度,带填充/边距

但是,由于某种原因,这不适用于svg元素。我已经使用最新的稳定版Firefox和Chrome尝试了以下示例。该svg元素莫名其妙地要采取的大小300x150:

小提琴

为什么?

Has*_*ami 5

尽管在规范中没有直接提到它(至少据我所知)<svg> 被视为替换元素(与<div>不可替换的块级元素不同)。

对于绝对定位的替换元素,如果top/ 的值bottom过于受限,则一旦为设置了值topbottom就会被忽略。left/ right属性也是如此。

10.3计算宽度和边距 / 10.3.8绝对定位,替换的元素

  1. 如果此时值过度约束,则忽略“ left”(如果包含块的“ direction”属性为“ rtl”)或“ right”(如果“ direction”为“ ltr”)的值)并求解该值。

10.6计算高度和边距 / 10.6.5绝对定位,替换的元素

  1. 如果此时这些值过度约束,则忽略“底部”的值并求解该值。

因此,绝对定位的<svg>元素将相对于topleft偏移定位。