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:省略; 私のコードに
セイバーtabatabaee yazdi

回答:


245

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をサポートする必要がない場合は、フレックスボックスを使用することもできます:jsfiddle.net/7gsrb38L/1
ValentinVoilean

div間</div><!-- --><div class="slide">の余分なスペースを削除したい場合は、div間にHTMLコメントを使用できます。インラインブロックスタイルを使用すると、コード内の空白がHTMLドキュメント内のスペースとして取得されます。
ジョー。

@Jo。ページサイズを縮小するには、レンダリングされていないものを使用することができます。たとえば、phpを使用</div><?php ?><div class="slide">する場合</div><div class="slide">、ソースコードのようにレンダリングします。
Fleuv 2017年

また、JavaScriptを使用してHTMLを生成すると、スペースを回避できます。私はDOThtmlを使用しています。:上記のHTMLはこれに置き換えることができますdot("body").div(dot.iterate(4, function(i){return dot.div("something something something something").class("slide");})).class("container")
JSideris


25

これは私のために働きました:

.container {
  display: inline-flex;
}

.slide {
  float: left;
}
<div class="container">
  <div class="slide">something1</div>
  <div class="slide">something2</div>
  <div class="slide">something3</div>
  <div class="slide">something4</div>
</div>

https://css-tricks.com/snippets/css/a-guide-to-flexbox/


これは、overflow:hiddenを使用して処理されました。ありがとう。
アルフィー

10

overflow: hidden正しい動作が得られるはずです。私の推測では、カプセル化されたs RTLを使用しているため、混乱しています。float: leftdiv

そのバグのほかに、あなたは正しい振る舞いを得ました。


1
カプセル化されたdivの「float:left」が原因かどうかを確認します。しかし、同じコードはIEだけでなく、FirefoxとSafariでも正常に機能します。だから、私はこれが事実であることを本当に疑います。
モーガンチェン、


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:flexしてwhite-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>タグは、文書のグループインライン要素に使用されます。
(ソース)


これは真実ですが、質問にまったく対応していないようです。
クエンティン

divがラップされ、spanがラップされないことを除いて、spanとdivはeverithingで同一であるため、これは問題に完全に対処します。また、必要な回避策を実装できます。
Mike

2
それはあなたの提案が「divの代わりにスパンを使用する」であることを意味しますか?それはあなたが言ったことではないからです。
クエンティン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.