CSS-Raster: Erstellen Sie eine neue Zeile, wenn der untergeordnete Inhalt die Spaltenbreite überschreitet
P粉212114661
2023-09-05 15:18:28
<p>Ich habe ein zweispaltiges Layout basierend auf CSS Grid. Ich möchte eine neue Zeile erstellen, wenn der Inhalt der zweiten Spalte <code>1fr</code> überschreitet. So wie es derzeit aussieht, läuft der Inhalt einfach über die Spalte hinaus. </p>
<p>Eine Voraussetzung für dieses Layout ist, dass sich die Elemente in der Spalte <code>rechtes Menü</code> befinden. Dies erreiche ich durch: </p>
<pre class="brush:php;toolbar:false;">.right-menu {
...
Grid-Auto-Flow: Spalte dicht;
...
}</pre>
<p>Wenn ich das Attribut <code>grid-auto-flow</code> entferne, stoppt der Überlauf. Allerdings sind die Artikel jetzt in mehreren Reihen gestapelt, was ich nicht möchte. </p>
<p>Ich habe auch versucht, <code>.right-menu</code> zu ändern.
<pre class="brush:php;toolbar:false;">.right-menu {
Anzeige: 'inline-flex';
}</pre>
<p>Das Ergebnis ist jedoch das gleiche wie zuvor. Der Inhalt der Spalte läuft über. Gibt es eine Möglichkeit, dies ohne JavaScript zu tun? Medienabfragen sind veraltet, da sie auf dem Inhalt und nicht auf der Breite des Ansichtsfensters basieren. </p>
<p>
<pre class="snippet-code-css lang-css Prettyprint-override"><code>.main-container {
Hintergrundfarbe: #ccc;
Polsterung: 1,0rem;
Breite: 1200px;
Rand: 1,0rem 0 0 1,0rem;
}
.menu-grid {
Anzeige: Raster;
Rastervorlagenspalten: wiederholen (automatische Füllung, minmax (600px, 1fr));
Rastervorlagenzeilen: wiederholen (automatisch ausfüllen, 1fr);
Grid-Auto-Flow: Zeile;
Gitterzeilenabstand: 1.0rem;
}
.left-menu {
Schriftgröße: 1,25rem;
}
.rechtes Menü {
Anzeige: Raster;
Hintergrundfarbe: weiß;
Rastervorlagenspalten: wiederholen (automatische Füllung, minmax (65px, 1fr));
Grid-Auto-Flow: Spalte dicht;
Gitterreihenabstand: 0,5rem;
Gitterspaltenabstand: 0,75rem;
}
.right-item {
Hintergrundfarbe: #fff;
Textausrichtung: Mitte;
Mindestbreite: 65 Pixel;
Rand: 1 Pixel einfarbig schwarz;
}</code></pre>
<pre class="snippet-code-html lang-html Prettyprint-override"><code><div class="main-container">
<div class="menu-grid">
<div class="left-menu">Left</div>
<div class="right-menu">
<div class="right-item">Item: 1</div>
<div class="right-item">Item: 2</div>
<div class="right-item">Item: 3</div>
<div class="right-item">Item: 4</div>
<div class="right-item">Item: 5</div>
<div class="right-item">Item: 6</div>
<div class="right-item">Item: 7</div>
<div class="right-item">Item: 8</div>
<div class="right-item">Item: 9</div>
<div class="right-item">Item: 10</div>
<div class="right-item">Item: 11</div>
<div class="right-item">Item: 12</div>
<div class="right-item">Item: 13</div>
</div>
</div>
</div></code></pre>
</p>
使用 Flexbox 会让你好运