如何在固定宽度DIV中获取浮动DIV以水平继续?

Mat*_*ick 37 html css css-float

我有一个高度和宽度固定的容器DIV(275x1000px).在这个DIV中,我想放置多个浮动DIV,每个DIV的宽度为300px,并且有一个水平(x轴)滚动条,允许用户左右滚动查看所有内容.

到目前为止这是我的CSS:

div#container {
    height: 275px;
    width: 1000px;
    overflow-x: auto;
    overflow-y: hidden;
    max-height: 275px;
}

div#container div.block {
    float: left;
    margin: 3px 90px 0 3px;
}
Run Code Online (Sandbox Code Playgroud)

问题是浮动DIV不会继续超过容器的宽度.在放置三个浮动DIV后,它们将继续在下方.如果我将overflow-y更改为auto,则会出现垂直滚动条,我可以向下滚动.

如何更改此设置以使浮动DIV继续运行而不会相互低于?

pd.*_*pd. 41

div#container {
    height: 275px;
    width: 1000px;
    overflow: auto;
    white-space: nowrap;
}

div#container span.block {
    width: 300px;
    display: inline-block;
}
Run Code Online (Sandbox Code Playgroud)

这里的技巧只是在Internet Explorer中设置为内联块时,默认情况下行为为内联的元素才会正常运行,因此内部容器需要<span>而不是<div>.

  • 实际上,只要您了解IE 6/7的一个问题,它就得到了很好的支持.它在IE 5.5或FF 2中不起作用,但这些天中任何一个都不代表任何接近大量用户的东西. (17认同)
  • 并非所有浏览器都支持内联块,因此切勿使用它。 (2认同)
  • 这不适合我.有人可以提出一个jsFiddle吗? (2认同)

Mat*_*lor 7

你需要一个宽大的额外div来包含块,然后它们将比容器div扩展得更宽,而不是下降到一个新行.

HTML:

<div id="container">
    <div id="width">
        <div class="block">
            <!-- contents of block -->
        </div>
        <div class="block">
            <!-- contents of block -->
        </div>
        <div class="block">
            <!-- contents of block -->
        </div>
        <!-- more blocks here -->
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

CSS:

#container {
    height: 275px;
    width: 1000px;
    overflow-x: auto;
    overflow-y: hidden;
    max-height: 275px;
}
#container #width {
    width:2000px; /* make this the width you need for x number of blocks */
}
#container div.block {
    float: left;
    margin: 3px 90px 0 3px;
}
Run Code Online (Sandbox Code Playgroud)


pra*_*eek 7

#row {
    white-space: nowrap; /* important */
    overflow: auto;
}

.items {
    display: inline-block;
}
Run Code Online (Sandbox Code Playgroud)
<div id="row">
    <div class="items">
        <img src="//placehold.it/200/100" alt="item 1" />
    </div>
    <div class="items">
        <img src="//placehold.it/200/100" alt="item 2" />
    </div>
    <div class="items">
        <img src="//placehold.it/200/100" alt="item 3" />
    </div>
    <div class="items">
        <img src="//placehold.it/200/100" alt="item 4" />
    </div>
    <div class="items">
        <img src="//placehold.it/200/100" alt="item 5" />
    </div>
    <div class="items">
        <img src="//placehold.it/200/100" alt="item 6" />
    </div>
    <div class="items">
        <img src="//placehold.it/200/100" alt="item 7" />
    </div>
    <div class="items">
        <img src="//placehold.it/200/100" alt="item 8" />
    </div>
    <div class="items">
        <img src="//placehold.it/200/100" alt="item 9" />
    </div>
    <div class="items">
        <img src="//placehold.it/200/100" alt="item 10" />
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

这里的诀窍是父级的"white-space:nowrap"属性,它只是告诉所有它的子元素水平继续,以及它的子节点的"display:inline-block"属性.您无需添加任何其他属性即可使其工作.

JS小提琴:http://jsfiddle.net/2c4jfetf/