Ich möchte eine Reihe von Divs (Zellen) haben, die nicht umbrochen werden, wenn der Browser zu schmal ist, um sie anzupassen.
Ich habe Stack durchsucht und konnte keine funktionierende Antwort auf eine meiner Meinung nach einfache CSS-Frage finden.
Die Zellen haben die angegebene Breite. Ich möchte jedoch nicht die Breite der Zeile angeben, die Breite sollte automatisch die Breite der untergeordneten Zellen sein.
Wenn das Ansichtsfenster zu schmal ist, um die Zeilen aufzunehmen, sollte das div mit Bildlaufleisten überlaufen.
Bitte geben Sie Ihre Antwort als Arbeitscode-Snippet an, da ich viele der Lösungen ausprobiert habe, die ich an anderer Stelle gesehen habe (z. B. Breite angeben: 100% und sie scheinen nicht zu funktionieren).
Ich suche eine reine HTML / CSS-Lösung, kein JavaScript.
.row {
float: left;
border: 1px solid yellow;
width: 100%;
overflow: auto;
}
.cell {
float: left;
border: 1px solid red;
width: 200px;
height: 100px;
}
<div class="row">
<div class="cell">a</div>
<div class="cell">b</div>
<div class="cell">c</div>
</div>
Im Moment ist es mir tatsächlich schwer, die Breite der Zeile auf eine wirklich große Zahl zu kodieren.
Antworten:
Die CSS-Eigenschaft
display: inline-block
wurde entwickelt, um diesen Bedarf zu decken. Sie können hier etwas darüber lesen: http://robertnyman.com/2010/02/24/css-display-inline-block-why-it-rocks-and-why-it-sucks/Unten finden Sie ein Beispiel für die Verwendung. Die Schlüsselelemente sind, dass das
row
Element hatwhite-space: nowrap
und diecell
Elemente habendisplay: inline-block
. Dieses Beispiel sollte in den meisten gängigen Browsern funktionieren. Eine Kompatibilitätstabelle finden Sie hier: http://caniuse.com/#feat=inline-blockquelle
<!DOCTYPE html>
oder<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
oben im HTML hinzu, damit der IE nicht standardmäßig den Mackenmodus verwendet.float: right
oder?Sie möchten eine
min-width
Zeile definieren, damit der Browser bei einer Größenänderung nicht darunter liegt und umschließt.quelle
Nachdem ich Johns Antwort gelesen hatte, stellte ich fest, dass Folgendes für uns zu funktionieren schien (keine Angabe der Breite erforderlich):
quelle
overflow: visible; white-space: nowrap;
hat der Trick für mich getan. Vielen Dank!Die einzige Möglichkeit, dies zu tun, ist die Verwendung von
overflow: visible;
undwidth: 20000px;
für das übergeordnete Element. Mit CSS Level 1, das mir bekannt ist, gibt es keine Möglichkeit, dies zu tun, und ich habe mich geweigert zu glauben, ich müsste mit CSS Level 3 alles geben. Das folgende Beispiel enthält 18 Menüs, die über mein LCD mit einer Auflösung von 1920 x 1200 hinausgehen Wenn Ihr Bildschirm größer ist, duplizieren Sie einfach die Menüelemente der ersten Ebene oder ändern Sie einfach die Größe des Browsers. Alternativ und mit etwas geringerer Browserkompatibilität können Sie CSS3-Medienabfragen verwenden.Hier ist eine vollständige Demonstration des Kopierens / Einfügens ...
quelle
width:100%
mitwidth:1000px
ihm funktioniert für michwhite-space: nowrap;
und die Kinder auf ein,display: inline-block;
wie bereits in anderen Antworten erwähnt (oder greifen Sie aufdisplay: table;
und zurückdisplay: table-cell;
).main > * > * {background-color: #000;}
O_oFür mich (mit Bootstrap) funktionierte nur die Einstellung
display:absolute;z-index:1
in der letzten Zelle.quelle
display:absolute
ist nicht gültig CSSIch hatte ein ähnliches Problem, bei dem ein begrenzter Bereich aus einem Bild in einem Float bestand: dem linken Block und einem nicht-float-Textblock. Der Bereich hat eine Flüssigkeitsbreite. Der Text wird standardmäßig auf der rechten Seite des Bildes angezeigt. Das Problem war, dass der Text mit einem <h2> -Tag begann, dessen erstes Wort das winzige Wort "From" ist. Wenn ich das Fenster auf eine kleinere Breite verkleinerte, ließ der nicht schwebende Text für einen bestimmten Breitenbereich nur das Wort "Von" oben im Umbruchbereich, wobei der Rest des Textes unter dem Gleitkomma gedrückt wurde Block. Meine Lösung bestand darin, das erste Wort des Tags zu vergrößern, indem das darauf folgende Leerzeichen durch den folgenden Code ersetzt wurde: <span style = "opacity: 0;"> x </ span>. Der Effekt war, das erste Wort anstelle von "From", "FromxNextWord" zu machen. wo das "x", unsichtbar, wie ein Raum aussah. Jetzt war mein erstes Wort groß genug, um nicht vom Rest des Textblocks verlassen zu werden.
quelle