你问的是“为什么”,而不是如何欺骗它:
通常是因为最初实现的程序员懒惰,因为他们已经在其他功能上投入了更多的精力,提供了更多奇怪的副作用,比如浮动,因为当时设计师更需要它们,但他们没有花时间让我们使用四个属性来推/拉元素与其邻居(现在我们只有四个属性来推,只有两个属性来拉)。
当设计 HTML 时,杂志爱文字围绕着图片流动,现在则不喜欢,因为今天我们有触摸趋势,喜欢方形的东西,有很多空间和没什么阅读内容。这就是为什么他们对浮动施加了更大的压力而不是居中,或者他们可以设计像
margin-top: fill;
或
margin: average 0;
这样的东西来简单地将内容对齐到底部,或者在其周围分配其额外的空间。
在这种情况下,我认为它还没有被实现,是因为与 CSS 缺乏一个
:parent
伪选择器相同的原因:为了防止循环评估。
不是工程师,我可以看到 CSS 现在是用来绘制元素一次,记住一些属性以便将来要绘制的元素,但永远不会回到已经绘制的元素。
这就是为什么(我猜)填充是根据宽度计算的,因为这是在开始绘制时可用的值。
如果填充的值为负值,则会影响外部限制,这已经在设置边距时定义好了。我知道,还没有绘制任何东西,但当你阅读绘画过程的方式时,由90年代技术创造的天才们,我感觉自己在问愚蠢的问题,只是说“谢谢”呵呵。
网页的要求之一是它们可以快速使用,而不像应用程序那样需要花费时间并占用计算机资源才能在显示之前正确地获取所有内容,网页需要使用少量资源(以适合每个可能的设备)并轻松滚动。
如果您看到具有复杂重新流动和定位的应用程序(如 InDesign),则无法快速滚动!从处理器和图形卡跳转到下一页需要大量的工作!
因此,向前绘制和计算并忘记一旦绘制的元素,现在似乎是必须的。
<span>
标签中显示代码,并且它被解析的方式会在代码块开头添加额外的换行符。使用负填充,我可以消除这个额外的空间。 - Steven Lu