与相对和绝对定位对齐

时间:2010-05-20 15:01:58

标签: html css css-position

我怎样才能将蓝色框放在红色框内? 我看到蓝色框的左侧正好位于红色框的中间,但我想将整个蓝色框放在中心,而不是左侧。盒子的尺寸不是恒定的。无论盒子尺寸如何,我都想对齐。使用here的示例。谢谢!

HTML:

<div id="rel">
    <span id="abs">Why I'm not centered ?</span>
</div>

CSS:

#rel {
    position: relative;
    top: 10px;
    left: 20px;
    width: 400px;
    height: 300px;
    border: 1px solid red;
    text-align: center;
}

#abs {
    position: absolute;
    bottom: 15px;
    width: 300px;
    height: 200px;
    border: 1px solid blue;
}

Screenshot

5 个答案:

答案 0 :(得分:2)

如果您能够将<span>代码更改为<div>

<div id="rel">
    <div id="abs">Why I'm not centered ?</div>
</div>

然后这个CSS应该可以工作。

#rel {
position: absolute;
top: 10px;
left: 20px;
width: 400px;
height: 300px;
border: 1px solid red;
text-align: center; }

#abs {
width: 300px;
height: 200px;
border: 1px solid blue;
margin: auto;
margin-top: 50px; }

我认为最好为封闭的盒子使用更多自动化,因为如果更改容器盒的大小,则需要更少的更改。

答案 1 :(得分:1)

如果您想要的话,可以将left:50px添加到#abs ...

#abs {
    position: absolute;
    bottom: 15px;
    width: 300px;
    height: 200px;
    border: 1px solid blue;
    left:50px;
}

答案 2 :(得分:1)

如果你要定义那样的尺寸(200px x 300px和300px x 400px),这里是它的居中方式:

#rel {
    position: relative;
    top: 10px;
    left: 20px;
    width: 400px;
    height: 300px;
    border: 1px solid red;
    text-align: center;
}

#abs {
    position: absolute;
    width: 300px;
    height: 200px;
    border: 1px solid blue;
    margin: 49px 0 0 49px;
}

答案 3 :(得分:0)

您可以在http://jsfiddle.net/NN68Z/96/

查看我的解决方案

我对css进行了以下操作

    #rel {
        position: relative;
        top: 10px;
        left: 20px;
        right: 20px;
        width: 400px;
        height: 300px;
        border: 1px solid red;
        text-align: center;

        display: table-cell;
        vertical-align: middle;
    }

    #abs {
        display: block;
        bottom: 15px;
        width: 300px;
        height: 200px;
        border: 1px solid blue;
        margin: 0 auto;
    }

答案 4 :(得分:-2)

这应该有效

#abs {
    position: absolute;
    left: auto;
    right: auto;
    bottom: 15px;
    width: 300px;
    height: 200px;
    border: 1px solid blue;
}