我正在阅读site中关于居中元素技术的指南。
我读了CSS代码,
.Absolute-Center {
margin: auto;
position: absolute;
top: 0; left: 0; bottom: 0; right: 0;
}
我也看了解释。
但我不明白的是上面的解释:0;左侧:0;底部:0;右侧:0;"。
上面写着
设置顶部:0;左侧:0;底部:0;右侧:0;为浏览器提供块的新边界框。此时块将填充其偏移父级(即主体或位置)中的所有可用空间:relative; container.www.example.com:对于绝对定位的元素,top、right、bottom和left属性指定距元素的包含块的边缘(元素相对于什么定位)的偏移量。Developer.mozilla.org: For absolutely positioned elements, the top, right, bottom, and left properties specify offsets from the edge of the element's containing block (what the element is positioned relative to).
这是什么意思?边界框?填充所有可用空间?
如何"顶:0;左侧:0;底部:0;右侧:0;"工作?它是不是把盒子的四个边拉伸来装满容器?价值观是这样工作的吗?
当我设置"top:0;左侧:0;底部:0;右侧:0;"?
我完全迷失在这个解释,我希望有人重新措辞,重述和解释给我在一个更简单和更容易理解的方式。
谢谢你。
4条答案
按热度按时间vshtjzan1#
当你同时使用
left
和right
(或者top
和bottom
)时会发生什么是令人困惑的,因为规范[6.3.绝对定位]告诉我们:对于其包含块基于块级元素的绝对定位元素,此属性是距该元素的填充边缘的 * 偏移量 *。
那么设置position会如何影响元素的 size 呢?原因在于宽度是如何计算的,这在规范的另一节[8.1.绝对或固定位置,不可替换元素的宽度]中有详细说明。
如果你同时指定了
left
和right
,而你元素的width
是 notauto
,那么你所说的就没有意义了,right
会被忽略(所有语句同样适用于top/bottom/height):如果左/右/宽度都不是自动的...则值被过度约束,忽略左(如果包含块的方向特性为rtl)或右(如果方向为ltr)的值,并求解该值。
但是如果您的元素 * 没有设置宽度,或者宽度是(默认值)
auto
*,则此规则起作用:如果宽度是自动的,左和右不是自动的,则求解宽度。
最后,确定这些元素值的公式为:
“左”+"左边距“+”左边框宽度“+”左填充“+”宽度“+”右填充“+”右边框宽度“+”右边距“+”右“=包含块的宽度
我们可以清楚地看到,在插入
left
和right
以及其他变量的值后,width
是未解(且无约束)变量,它将变成width of containing box - left - right
(或多或少),或者换句话说:“填充偏移之间的空间”。eivnm1vs2#
可以使用top设置100%宽度和100%高度:0;左侧:0;底部:0;右侧:0;
示例:您有一个div,该div没有固定的宽度和高度。在这种情况下,您可以应用此样式并使宽度和高度为100%。
dsekswqp3#
定位一个div或元素absolute如下css代码片段扩展元素,以获得父元素的全宽和全高。如果父元素是一个整页元素,样式元素将占据整页。如果有更多的内容在下面或上面,他们将显示他们应该。
另一方面,定位为fixed会使其全屏显示。此外,它不会滚动,而是将其视为页面顶部的内容(一般情况下),它独立于页面的其他元素,可以像往常一样滚动(如果固定元素不透明,则不可见:1并且是整页)。
fbcarpbf4#
您可以使用
inset: 0*
,它等效于top: 0; right: 0; bottom: 0; left: 0
。所有主流浏览器都支持它。