在计算绝对定位的不可替换元素的宽度和外边距时,规范先提出了一个“静态位置”的术语,并继续解释:
The static-position containing block is the containing block of a hypothetical box that would have been the first box of the element if its specified 'position' value had been 'static' and its specified 'float' had been 'none'.
个人的翻译:静态位置包含块是position
为static
且float
为none
的元素的第一个盒即假想盒的包含块。
参考了几个翻译,大致如此。其中有几个问题希望有人帮忙解释:
“第一个盒”——为什么强调“第一个”,除了
li
,都只生成一个盒吧?根据引用,静态位置应该指的就是假想盒,为什么会让“位置”等同于“盒”呢,用“静态盒”不是更易于理解么?或者是我的理解有问题?
静态位置及静态位置包含块的作用有没有例子说明下(对此问题规范中后文有所解释,但引用的这句已经让我云里雾里了,所以还是提了出来。。。)
再次感谢!
这么翻译没错但不是我们正常的说话方式,也把你给绕进去了。把从句切分为两段:
静态位置包含块是一个假想盒的包含块,这个假想盒是指当假设这个元素 position 为 static 且 float 为 none 时生成的第一个盒子。
强调第一个是指最上最左(lrt 方向下),无论一个元素生成几个盒子,总有第一个对吧。
看回正常的语序你就会发现,“位置”并没有等同于“盒”,静态位置包含块是指在静态位置的包含块。
这个位置用于给 top left 计算默认值。其实这段话不理解也没关系的,因为就在前一句就说了
不是实现规范的话知道它的默认位置是假设在 normal flow 时的位置就行。例子你在一个不设 top left bottom right 的 absolute 元素前放几个 in-flow 元素就可以观察到。