将具有多行文本的块居中

时间:2015-06-16 23:21:00

标签: html css

以下是我正在使用的示例:

http://jsfiddle.net/adyjzbuh/18/

以下是代码:

<div class="box1">
    <div class="box2">Some text</div>
</div>
<div class="box1">
    <div class="box2">Some more text, actually, 2 lines of textalicious text</div>
</div>
<div class="box1">
    <div class="box3">Some more text, actually, 2 lines of textalicious text</div>
</div>
<div class="box1">
    <div class="box4">Some more text, actually, 2 lines of textalicious text</div>
</div>

这是CSS:

.box1 {
    width: 300px;
    border: 1px solid black;
    padding: 10px;
    text-align: center;
}
.box2 {
    display: table;
    margin: 0px auto;
    border: 1px solid black;
    padding: 10px;
    text-align: left;
}
.box3 {
    display: inline-block;
    margin: 0px auto;
    border: 1px solid black;
    padding: 10px;
    text-align: left;
}
.box4 {
    display: table-cell;
    margin: 0px auto;
    border: 1px solid black;
    padding: 10px;
    text-align: left;
}

正如您所看到的,第一个块完全符合我的要求。边距自动调整,块按预期居中。当存在多行文本时会出现问题。当我对具有多行文本的下一个块使用相同的样式时,该块将宽度调整为可用空间的100%,在第一行上留下很大的间隙并且不会出现居中。

我尝试将显示更改为内联块和表格单元格,但它不起作用(如第三和第四块所示)。我到处寻找解决方案,没有一个有效。

外部容器将始终为300px,内部块必须始终具有灵活性并适应多行文本。非常感谢任何解决方案/示例,谢谢。

编辑我忘了提到客户特别希望文字对齐到左边。

3 个答案:

答案 0 :(得分:0)

我想补充一下:


text-align: center


text-align:justify

而不是:


text-align:left

这是你期望的样子吗?

答案 1 :(得分:0)

你可能想要最大宽度:50%;在你的内盒上。原因是你的解决方案并没有真正按照你想要的方式工作,你的边距设置为自动,因此边距是根据宽度计算的。因此,如果说您的宽度将是父容器的50%(在这种情况下为.box1),则会自动计算边距以填充其他50%,每边25%。

最大宽度可以解决您的问题,内箱仍然灵活,但只占宽度的50%。

.box1 {
    width: 300px;
    border: 1px solid black;
    padding: 10px;
    text-align: center;
}
.box2 {
    display: table;
    margin: 0px auto;
    border: 1px solid black;
    padding: 10px;
    text-align: left;
    max-width: 50%;
}

答案 2 :(得分:0)

不确定你最终要找的是but here is a working example,使用表方法,就像你一样,但是使用

display:table;
display:table-cell;

相应地,文本在中间对齐,并且居中或左对齐。