display:inline,但在不同的行上

时间:2012-02-03 15:19:50

标签: css inline center alignment

内联元素很棒,因为它们的宽度是内容的宽度,因为它可以将它们放在CSS的规则中:

text-align: center

但是内联元素保持在同一条线上。是否可以垂直对齐它们?

小提琴:http://jsfiddle.net/_bop/NhVaF/ 全屏小提琴:http://jsfiddle.net/_bop/NhVaF/show

请不要:

  • 更改示例中的HTML。改变CSS!
  • 提出其他技术来集中元素,除非你有一个更好的解决方案,适用于宽度未指定的元素,不需要大量的容器和/或浮动黑客。

提前致谢!

4 个答案:

答案 0 :(得分:3)

在您的标记中,如果跨度位于不同的行上,您可以在父容器上添加:

white-space: pre-line;

使用此CSS声明,您的范围仍然居中,并且您不必添加HTML标记。


  

<强>预线    - 此值将导致空格序列折叠为单个空格字符。换行将在任何地方发生   必须填写行框,并在标记的新行(或在   在生成的内容中出现“\ a”)。换句话说,它就像   正常,但它会尊重明确的换行符。

您可以在此处找到有关空白区域的更多信息:


对于IE7兼容性,您还可以在父容器上添加:

*white-space: pre /*FixIE7*/;

答案 1 :(得分:1)

如果要将其显示在另一个上方,则需要一些保持块来保持跨度。这是我能做的最好的事情。

http://jsfiddle.net/NhVaF/5/

答案 2 :(得分:0)

如果你想在不改变html的情况下使它工作,那么最好的办法就是简单地浮动:左;清楚:左;像这样:

span {
    float: left;
    clear: left;
    color: #FFF;
    padding: 30px;
}

显示:块;将工作,因为它需要您设置宽度(否则它们将填充可用空间)。

display:inline-block;将工作,因为仍然显示在同一行。

答案 3 :(得分:0)

我也只是玩这个,只需在每个<br>元素之后放置inline-block即可找到我的解决方案。我知道它正在改变html,但只是略有改变!

如果要使用CSS创建换行符,请尝试使用:after伪类。这样的事情会起作用吗?

div.class:after {
  content:"\a";
  white-space: pre;
}

中断:after诀窍:https://stackoverflow.com/a/10934138/6586407