CSS-divを水平方向に整列させる


84

私は固定で、コンテナのdiv持っているwidthheight、とをoverflow: hidden

floatの水平方向の行が必要です:このコンテナー内の左のdiv。左にフロートしているDivは、親の右の境界を読み取った後、自然に下の「行」にプッシュします。これはheight、親のがこれを許可しない場合でも発生します。これはどのように見えるかです:

![間違った] [1]-広告に置き換えられたイメージシャックイメージを削除しました

どのように見せたいですか:

![右] [2]-広告に置き換えられたイメージシャックイメージを削除しました

注:必要な効果は、インライン要素&を使用することで実現できますwhite-space: no-wrap(これが、表示されている画像での方法です)。ただし、子divはフロートされたブロックレベルの要素である必要があるため、これは私には良くありません(理由が長すぎてここで説明できません)。


8
画像のリンクが壊れているようです。オリジナルがまだある場合は、stack.imgurに再アップロードしてください。ありがとう!
Ilmari Karonen 2015

回答:


99

フロートされたすべてのdivを保持するのに十分な幅の内部divをコンテナーに入れることができます。

#container {
  background-color: red;
  overflow: hidden;
  width: 200px;
}

#inner {
  overflow: hidden;
  width: 2000px;
}

.child {
  float: left;
  background-color: blue;
  width: 50px;
  height: 50px;
}
<div id="container">
  <div id="inner">
    <div class="child"></div>
    <div class="child"></div>
    <div class="child"></div>
  </div>
</div>


次に、どうすれば外部divセンターを作成できますか?外部divにalign = "center"を追加しようとしましたが、機能しないようです。
白波2014

1
これはパーセンテージ幅でも機能します。私の場合、コンテナdivを使用してwidth: 200%;おり、子要素はそれぞれwidth: 50%;です。次にtransform: translateX(n%);、親コンテナがある限り、コンテナでカルーセル効果をエミュレートするために使用できますoverflow: hidden;
evolross 2017年

31

style="overflow:hidden"IE7以下のような古いブラウザでは、親divstyle="float: left"すべての子divsdivs水平方向に整列することが重要です。

最新のブラウザではstyle="display: table-cell"、すべての子に使用できdivs、水平方向に適切にレンダリングされます。


6

これはあなたが望むものに近いようです:

#foo {
  background: red;
  max-height: 100px;
  overflow-y: hidden;
}

.bar {
  background: blue;
  width: 100px;
  height: 100px;
  float: left;
  margin: 1em;
}
<div id="foo">
  <div class="bar"></div>
  <div class="bar"></div>
  <div class="bar"></div>
  <div class="bar"></div>
  <div class="bar"></div>
  <div class="bar"></div>
</div>


5

clipプロパティを使用できます:

#container {
  position: absolute;
  clip: rect(0px,200px,100px,0px);
  overflow: hidden;
  background: red;
}

注意position: absoluteしてoverflow: hidden取得するために必要なclip仕事に。


4
クリップのブラウザサポートとは何ですか?
アレックス

1
w3schools.com/cssref/pr_pos_clip.aspから:clipプロパティは、すべての主要なブラウザーでサポートされています。注:値 "inherit"は、IE7以前ではサポートされていません。IE8には!DOCTYPEが必要です。IE9は「継承」をサポートしています。
dsomnus 2012

4

Float:left、display:inline-blockは、要素がコンテナの幅を超えると、両方とも要素を水平方向に整列できません。

要素を水平方向に表示する必要がある場合は、コンテナをラップしないように注意することが重要です。 white-space: nowrap


4

必要に応じて、cssflexboxを使用してdivを水平方向と垂直方向に整列できるようになりました。一般式は次のようになります

parent-div {
  display: flex;
  flex-wrap: wrap;
  /* for horizontal aligning of child divs */
  justify-content: center;
  /* for vertical aligning */
  align-items: center;
}

child-div {
  width: /* yoursize for each div */
  ;
}

エレガントなソリューション。
zawhtut

1

それらを左に浮かせます。Chromeでは、少なくとも、id="container"LucaMの例ではラッパーを使用する必要はありません。


0

あなたはこのようなことをすることができます:

#container {
  background-color: red;
  width: 200px;
}

.child {
  background-color: blue;
  width: 150px;
  height: 50px;
}
<div id="container">
  <div id="inner">
    <div class="child"></div>
    <div class="child"></div>
    <div class="child"></div>
  </div>
</div>

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.