text-align:center在绝对定位跨度上不能正常工作

时间:2013-02-26 18:36:07

标签: css css-position html text-alignment

我需要在<span>内放置2 <div>,第一个跨度必须放在顶部,第二个跨度放在底部,如南北。

enter image description here

<div>
    <span class="north">N</span>
    <span class="south">S</span>
</div>

为此,我考虑在2 position:absolute;上使用<span>

div
{
    display:inline-block;
    width: 20px;
    position:relative;
    height:100px;
}
.north
{
    position:absolute;
    top:0;
}
.south
{
    position:absolute;
    bottom:0;
}

现在,跨度应该位于左侧(默认),以使它们居中,我使用:

div
{
    text-align:center;
}

但我得到了这个:

enter image description here

检查出来:http://jsfiddle.net/Zn4vB/

为什么会发生这种情况?

注意:我不能使用左,右边距,因为这些跨距的内容不同,我只需要在中心正确对齐它们。

3 个答案:

答案 0 :(得分:12)

http://jsfiddle.net/Zn4vB/1/

问题在于,一旦绝对定位,它就不再遵循文档流程。所以文本居中,但只在粉红色范围内。而且由于它绝对定位,即使它是一个div,宽度也会崩溃。

解决方案是使定位的跨度为100%宽度然后居中工作。

span
{
    background-color:pink;
    left: 0;
    width: 100%;
}

如果您不希望粉红色延伸整个宽度,那么您必须在定位的跨度内嵌套元素(例如跨度)并为该元素提供背景颜色,如下所示:http://jsfiddle.net/Zn4vB/6/

答案 1 :(得分:1)

请检查这个是否是您想要的想法..

div
{
    display:inline-block;
    width: 20px;
    position:relative;
    height:100px;
    border-style:solid;
}
span
{
    background-color:pink;
    width:100%;
    text-align:center;
}
.north
{
    position:absolute;
    top:0;
}
.south
{
    position:absolute;
    bottom:0;
}

答案 2 :(得分:0)

你有正确的定位。但<span>代码是内嵌元素,因此您需要将它们显示为display: block;的块级元素,然后使用width: 100%;显式声明其宽度。< / p>

他们将从text-align上的样式规则继承<div>属性,因此文本将位于中心。

我在这里更新了您的代码:http://jsfiddle.net/robknight/Zn4vB/5/