如何使DIV不包裹?


179

我需要创建一个包含多个其他DIV的容器DIV样式。要求如果将浏览器窗口调整为窄尺寸,则这些DIV将不会自动换行。

我试图使其工作如下。

<style>
   .container
   {
      min-width: 3000px;
      overflow: hidden;
   }
   .slide
   {
      float: left;
   }
</style>
<div class="container">
   <div class="slide">something</div>
   <div class="slide">something</div>
   <div class="slide">something</div>
   <div class="slide">something</div>
</div>

在大多数情况下,这是可行的。但是,在某些特殊情况下,渲染是不正确的。我发现容器DIV在IE7的RTL中更改为3000px宽度;变得混乱了。

还有其他方法可以使容器DIV不包装吗?


我添加了这个标签:white-space:nowrap; 这个标签: text-overflow:省略号;到我的代码
saber tabatabaee yazdi

Answers:


244

尝试使用white-space: nowrap;容器样式(而不是overflow: hidden;


48

如果由于我不知道元素数量而不想定义最小宽度,那么对我有用的唯一事情就是:

display: inline-block;
white-space: nowrap;

但仅在Chrome和Safari中:/


33

以下内容对我有效,没有浮动(为视觉效果我对示例进行了一些修改):

.container
{
    white-space: nowrap; /*Prevents Wrapping*/
    
    width: 300px;
    height: 120px;
    overflow-x: scroll;
    overflow-y: hidden;
}
.slide
{
    display: inline-block; /*Display inline and maintain block characteristics.*/
    vertical-align: top; /*Makes sure all the divs are correctly aligned.*/
    white-space: normal; /*Prevents child elements from inheriting nowrap.*/
    
    width: 100px;
    height: 100px;
    background-color: red;
    margin: 5px;
}
<div class="container">
   <div class="slide">something something something</div>
   <div class="slide">something something something</div>
   <div class="slide">something something something</div>
   <div class="slide">something something something</div>
</div>

div可以用空格分隔。如果您不希望这样做,请使用margin-right: -4px;代替margin: 5px;for .slide(这很丑陋,但这是一个棘手的问题)。


好答案。我在下面添加了一个类似的示例,但在看到您的示例后将其删除。如果不必支持IE9,也可以使用flexbox:jsfiddle.net/7gsrb38L/1
ValentinVoilean

</div><!-- --><div class="slide">如果要删除div之间的多余空格,可以在div之间使用HTML注释。内联块样式导致代码中的空白被拾取为HTML文档中的空白。

@乔 为了减小页面大小,您宁愿使用未呈现的内容,例如使用php:</div><?php ?><div class="slide">呈现时,如</div><div class="slide">源代码中所示。
Fleuv

另外,如果使用JavaScript生成HTML,则可以避免空格。我使用DOThtml。可以将以下HTML替换为:dot("body").div(dot.iterate(4, function(i){return dot.div("something something something something").class("slide");})).class("container")
JSideris '17

30

您需要的组合是

white-space: nowrap

在父母和

display: inline-block; // or inline

对孩子们



10

overflow: hidden应该给你正确的行为。我的猜测是,RTL因为您已经float: left封装了divs ,所以很混乱。

除了该错误,您还有正确的行为。


1
我将检查是否归因于封装的div上的“ float:left”。但是,相同的代码可以在Firefox和Safari上正常运行,而不能在IE上运行。因此,我真的怀疑情况是否如此。
Morgan Cheng


2

以上都不对我有用。

就我而言,我需要将以下内容添加到我创建的用户控件中:

display:inline-block;


1

您可以使用

display: table;

为您的容器,因此避免使用overflow: hidden;。如果仅将其用于变形目的,则它应该可以完成这项工作。


0
<div style="height:200px;width:200px;border:; white-space: nowrap;overflow-x: scroll;overflow-y: hidden;">
   <p>The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.The quick brown fox jumps over the lazy dog.The quick brown fox jumps over the lazy dog.
   The quick brown fox jumps over the lazy dog.The quick brown fox jumps over the lazy dog.The quick brown fox jumps over the lazy dog.The quick brown fox jumps over the lazy dog.
   The quick brown fox jumps over the lazy dog.
   The quick brown fox jumps over the lazy dog.The quick brown fox jumps over the lazy dog.The quick brown fox jumps over the lazy dog.The quick brown fox jumps over the lazy dog.
   The quick brown fox jumps over the lazy dog.The quick brown fox jumps over the lazy dog.</p>
</div>

0

使用display:flexwhite-space:nowrap

p{
  display:flex;
  white-space:nowrap;
  overflow:auto;
}
<h2>Sample Text.</h2>

<p>Some example text that will not wrap..lla et dictum interdum, nisi lorem egestas odio, vitae scelerisque enim ligula venenatis dolor. Maecenas nisl est, ultrices nec congue eget, auctor vitae massa. Fusce luctus vestibulum augue ut aliquet. Mauris ante ligula, facilisis sed ornare eu, lobortis in odio. Praesent convallis urna a lacus interdum ut hendrerit risus congue. Nunc sagittis dictum nisi, sed ullamcorper ipsum d</p>

<h3>Then some other text</h3>


-1

所述<span>标签用于一个文件中组直列元件。
(资源)


虽然这是事实,但似乎根本没有解决这个问题。
昆汀

这完美地解决了这个问题,因为span和div在所有方面都是相同的,除了div被包装而span不是。而且您可以实施所需的任何解决方法。
迈克

2
这是否意味着您的建议是“使用跨度而不是div”?因为那不是你所说的。
昆汀
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.