7

如何强制 DIV 比浏览器窗口更宽以水平容纳它的子级,而不是强制它们在新行上

即用小提琴考虑以下代码。一个容器元素内部有 6 个子元素,所有子元素的最小宽度为 200px,并且都设置为 float:left。当窗口的大小调整到足够宽时,它们都在一行上。当它变窄时,他们开始推到新的行。理想情况下,我希望它们保持在一行并让浏览器显示滚动条。

http://jsfiddle.net/krippy2k/x8sDp/20/

.container {
}

.child-element {
    min-width: 200px;
    float: left;
    height: 100px;
}

.child1 {
    background-color: purple;
}
.child2 {
    background-color: orange;
}
.child3 {
    background-color: black;
}
.child4 {
    background-color: green;
}
.child5 {
    background-color: blue;
}
.child6 {
    background-color: red;
}

<div class="container">
    <div class="child-element child1"></div>
    <div class="child-element child2"></div>
    <div class="child-element child3"></div>
    <div class="child-element child4"></div>
    <div class="child-element child5"></div>
    <div class="child-element child6"></div>
</div>
4

4 回答 4

14

您可以向width父元素提供 a ,否则您可以使用float: left;withdisplay: inline-block;white-space: nowrap;

.container {
   white-space: nowrap;
}

.child-element {
    min-width: 200px;
    display: inline-block;
    height: 100px;
}

演示

对于每个元素之间的white-spaceof ,您可以使用4pxmargin-left: -4px;

演示 2

于 2013-08-20T15:44:44.253 回答
7

而不是浮动孩子,将它们设置为内联块并设置white-space:nowrap在容器上。

.container {
    white-space:nowrap;
}

.child-element {
    display:inline-block;
    min-width: 200px;
    height: 100px;
}

http://jsfiddle.net/x8sDp/24/

于 2013-08-20T15:45:46.757 回答
1

只需设置.containertodisplay:table.child-elementsto并从中display:table-cell删除:float:left.child-element

.container {
    display: table;
}

.child-element {
    min-width: 200px;
    display: table-cell;
    height: 100px;
}

演示

于 2013-08-20T15:46:50.343 回答
0

为容器添加巨大的宽度

.container {
  width: 999999px;
}

尽管从可用性/界面的角度来看,我不确定您为什么要做这样的事情。

于 2013-08-20T15:45:29.370 回答