CSS两个div宽度50%在一行中,文件中有换行符

Chr*_*ris 51 css inline

我尝试使用百分比作为宽度来构建流体布局.这样做我试过这个:

<div style="width:50%; display:inline-table;">A</div>
<div style="width:50%; display:inline-table;">B</div>
Run Code Online (Sandbox Code Playgroud)

在这种情况下,他们不会站在一行,但如果我删除它们之间的换行符,像这样:

    <div style="width:50%; display:inline-table;">A</div><div style="width:50%;   display:inline-table;">B</div>
Run Code Online (Sandbox Code Playgroud)

然后它工作正常.问题出在哪儿?我怎么能这样做,但没有使用绝对位置和浮动.

抱歉英语.我希望我能很好地解释我的问题

meo*_*meo 74

问题在于,当某些东西是内联的时,每个whitepsace都是一个真实的空间.所以它会影响元素的宽度.我建议使用float或display:inline-block.(只是不要在div之间留下任何空格).

演示:http://jsfiddle.net/N9mzE/1/

div {
  background: red;
}
div + div {
  background: green;
}
Run Code Online (Sandbox Code Playgroud)

  • @RuiMarques你从未听说过'box-sizing:border-box`你:D (3认同)

Ana*_*Ana 30

问题是如果你在HTML中有一个新的行,那么当你使用inline-table或时,它们之间会有一个空格inline-block

50%+ 50%+空间> 100%,这就是为什么第二个最终低于第一个空间

解决方案:

<div></div><div></div>
Run Code Online (Sandbox Code Playgroud)

要么

<div>
</div><div>
</div>
Run Code Online (Sandbox Code Playgroud)

要么

<div></div><!--
--><div></div>
Run Code Online (Sandbox Code Playgroud)

我们的想法是在HTML中的第一个结束div标签和第二个div标签之间没有任何空间.

PS - 我也会使用inline-block而不是inline-table为此

  • 最近几个小时,我的头撞在墙上。谢谢...解决方案3是它,现在您编写了它,我在示例代码中也看到了它。有没有关于这种小情况的文章? (2认同)
  • 为什么我发现自己每隔几个月就会再次需要这个答案......哦对了,因为它是这样工作的,这是无知的! (2认同)

Tih*_*kov 22

使用以下CSS将它们包裹在div周围

.div_wrapper{
    white-space: nowrap;
}
Run Code Online (Sandbox Code Playgroud)

  • 优秀.最干净的结果. (2认同)

san*_*eep 21

给这个parentDIV 字体大小:0.像这样写:

<div style="font-size:0">
  <div style="width:50%; display:inline-table;font-size:15px">A</div>
  <div style="width:50%; display:inline-table;font-size:15px">B</div>
</div>
Run Code Online (Sandbox Code Playgroud)

  • 很好的一个+1为此 (2认同)

Dan*_*eld 13

我怎么能做这样的事情,但没有使用绝对位置和浮动?

除了使用这种inline-block方法(如其他答案中所述),还有一些其他方法:

1)CSS表(FIDDLE)

.container {
  display: table;
  width: 100%;
}
.container div {
  display: table-cell;
}
Run Code Online (Sandbox Code Playgroud)
<div class="container">
  <div>A</div>
  <div>B</div>
</div>
Run Code Online (Sandbox Code Playgroud)

2)Flexbox(FIDDLE)

.container {
  display: flex;
}
.container div {
  flex: 1;
}
Run Code Online (Sandbox Code Playgroud)
<div class="container">
  <div>A</div>
  <div>B</div>
</div>
Run Code Online (Sandbox Code Playgroud)

作为参考,这个CSS-tricks帖子似乎总结了实现这一目标的各种方法.