Frage

Ich habe ein Container-Div mit fester Breite und Höhe und Überlauf:versteckt.

Ich möchte eine horizontale Float-Reihe:linke Divs in diesem Container.Divs, die nach links verschoben werden, werden natürlich auf die darunter liegende „Linie“ verschoben, nachdem sie die rechte Grenze ihres übergeordneten Elements gelesen haben.Dies geschieht auch dann, wenn die Körpergröße des Elternteils dies nicht zulassen sollte.So sieht das aus:

![Falsch][1] - Image Shack-Bild entfernt, das durch eine Anzeige ersetzt wurde

Wie ich es gerne hätte:

![Rechts][2] - Image Shack-Bild entfernt, das durch eine Anzeige ersetzt wurde

Notiz:Der gewünschte Effekt kann durch die Verwendung von Inline-Elementen und Leerzeichen erzielt werden:No-Wrap (so habe ich es im gezeigten Bild gemacht).Das nützt mir jedoch nichts (aus Gründen, die zu ausführlich sind, um sie hier zu erklären), da die untergeordneten Divs schwebende Elemente auf Blockebene sein müssen.

War es hilfreich?

Lösung

Sie können ein inneres Div in den Container einfügen, das breit genug ist, um alle schwebenden Divs aufzunehmen.

#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>

Andere Tipps

style="overflow:hidden" für Eltern div Und style="float: left" für das ganze Kind divs sind wichtig, um das zu machen divs Für alte Browser wie IE7 und niedriger horizontal ausrichten.

Für moderne Browser können Sie verwenden style="display: table-cell" für das ganze Kind divs und es würde horizontal richtig gerendert werden.

du kannst den ... benutzen clip Eigentum:

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

beachten Sie das position: absolute Und overflow: hidden benötigt, um zu bekommen clip arbeiten.

Dies scheint Ihren Wünschen nahe zu kommen:

#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>

Schweben:links, Anzeige:Inline-Block kann die Elemente nicht horizontal ausrichten, wenn sie die Breite des Containers überschreiten.

Es ist wichtig zu beachten, dass der Container nicht umbrochen werden sollte, wenn die Elemente horizontal angezeigt werden MÜSSEN: white-space: nowrap

Sie können jetzt CSS-Flexbox verwenden, um Divs bei Bedarf horizontal und vertikal auszurichten.Die allgemeine Formel sieht so aus

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

Lass sie nach links schweben.Zumindest in Chrome benötigen Sie keinen Wrapper. id="container", im Beispiel von LucaM.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top