Css 为什么magin:auto不足以绝对或固定居中位置?

Css 为什么magin:auto不足以绝对或固定居中位置?,css,css-position,Css,Css Position,我试图将div的内容居中,父容器设置为相对 我在内部分区上使用这个 position: absolute; margin: auto; width: 70px; height: 70px; 但它拒绝居中,我不得不在0的左右两边加一个,但我不明白为什么 position: absolute; right: 0; left: 0; margin: auto; width: 70px; height: 70px; 我认

我试图将div的内容居中,父容器设置为相对

我在内部分区上使用这个

    position: absolute;
    margin: auto;
    width: 70px;
    height: 70px;
但它拒绝居中,我不得不在0的左右两边加一个,但我不明白为什么

    position: absolute;
    right: 0;
    left: 0;
    margin: auto;
    width: 70px;
    height: 70px;
我认为居中只需要一个宽度,这是有

我有点困惑,为什么将右/左设置为0-似乎有效

另外,如果图像是70px,父框是200px(就是这样),将right设置为0,left设置为0-这实际上是在做什么

任何想法,我可能都没有正确理解


谢谢。

使用
右侧
左侧
(和
位置:绝对
)将
div绝对对齐到父元素,在您的情况下,偏移量为
0
。尝试在浏览器的开发者控制台中使用它们的值。

当元素具有绝对/相对位置时,可以使用左右属性 您可以使用
margin:auto
或在x轴上使用
边距:0自动

.parent{
宽度:200px;
高度:200px;
背景:红色;
}
.孩子{
保证金:自动;
宽度:70px;
高度:70像素;
背景:绿色;
}

固定点是绝对对中。你就快到了:

position: absolute;
margin: auto;
top: 0;
left: 0;
right: 0;
bottom: 0;

您需要将所有四个方向设置为
0
,您的子div将完全位于父div的中心。

您需要参考规范来理解这一点。如果元素没有使用<代码>位置:绝对< /代码>,那么你需要考虑你可以在哪里阅读:

如果“左边距”和“右边距”均为“自动”,则它们使用的值相等这将使元素相对于包含块的边缘水平居中

对于内部流动元件,除了宽度之外,只需要留有余量


当涉及到
位置时:我们所指的绝对
元素

如果“left”、“width”和“right”三个都是“auto”:首先将“margin left”和“margin right”的任何“auto”值设置为0

很明显,如果看不到任何左侧、右侧或宽度,边距将计算为
0
(无定心)

如果三者都不是“自动”:如果“左边距”和“右边距”都是“自动”,则在两个边距获得相等值的额外约束下求解方程

当你设置左、右和宽度时,边距将得到相等的值(我们可以通过公式找到),你将有定心

如果您继续阅读,您还可以看到:

否则,将“左边距”和“右边距”的“自动”值设置为
0
,并选择以下六条适用规则之一

所以,我们只有在设置左、右和宽度时,才能得到边缘的居中效果。省略一个不会使元素居中

下面是一个示例,以说明规范中详述的8种不同情况

.box{
高度:50px;
边框:1px实心;
位置:相对位置;
保证金:5px;
}
.box>div{
位置:绝对位置;
左:0;
右:0;
保证金:自动;
宽度:200px;
背景:红色;
颜色:#fff;
}

一些文本
一些文本
一些文本
一些文本
一些文本
一些文本
一些文本
一些文本

请添加您的html代码。请给我们一个演示问题的代码片段。@DohaHelmy提供的代码已经存在enough@thingEvery没问题。他要求理解一个行为,但为什么我需要设置左和右,以便在位置为绝对位置时使其居中?必须将左和右设置为0,因为这样元素就试图同时适应左和右。