为什么行内元素不能变形?
Why can't inline elements be transformed?
The CSS transformations spec 表示转换仅适用于块级或原子内联级元素(例如 inline-block
)。但是 为什么 它们不能处理行内元素?此限制背后的原因是什么?
Microsoft 的 This test 表明这是可能的。它在 IE9 中通过,但在 Chrome 中不通过。所以这是可能的,只是不符合规范。
如@Shikkediel 所述,内联元素不像块元素那样具有强边界。它们不会以相同的方式影响文档的流向(如果有的话),并且与相邻的文本或元素紧密绑定。 CSS 变换对边界框(内联元素在技术上确实具有)的操作方式对内联元素没有真正意义。
考虑 <span>
(或 div)中的 <strong>
。粗体文本仅由样式变化定义,但可以跨多行流动并且没有可预测的矩形边界区域。如果你要应用 CSS 旋转,它会从哪里旋转?如果有的话,在旋转时它会如何回流?
另一方面,包含 <span>
确实有矩形边界,因此找到中心和角点、旋转和缩放都是可预测和明确定义的。
以this fiddle为例。行内元素的背景为:
但编辑器显示的边界是:
您可以清楚地看到背景和元素的边界完全不匹配。没有明确的界限,转换因为困难而且不是很有用。
The CSS transformations spec 表示转换仅适用于块级或原子内联级元素(例如 inline-block
)。但是 为什么 它们不能处理行内元素?此限制背后的原因是什么?
This test 表明这是可能的。它在 IE9 中通过,但在 Chrome 中不通过。所以这是可能的,只是不符合规范。
如@Shikkediel 所述,内联元素不像块元素那样具有强边界。它们不会以相同的方式影响文档的流向(如果有的话),并且与相邻的文本或元素紧密绑定。 CSS 变换对边界框(内联元素在技术上确实具有)的操作方式对内联元素没有真正意义。
考虑 <span>
(或 div)中的 <strong>
。粗体文本仅由样式变化定义,但可以跨多行流动并且没有可预测的矩形边界区域。如果你要应用 CSS 旋转,它会从哪里旋转?如果有的话,在旋转时它会如何回流?
另一方面,包含 <span>
确实有矩形边界,因此找到中心和角点、旋转和缩放都是可预测和明确定义的。
以this fiddle为例。行内元素的背景为:
但编辑器显示的边界是:
您可以清楚地看到背景和元素的边界完全不匹配。没有明确的界限,转换因为困难而且不是很有用。