Wie verteilt man den Platz in einem Container-Div gleichmäßig auf zwei Divs mit umschaltbarer Sichtbarkeit und unterschiedlichem Inhalt?
P粉289775043
2023-08-17 21:56:47
<p>Ich habe einen Div-Container mit 4 Divs. Es enthält 2 Header und 2 Inhaltsdivs. Durch Klicken auf die Kopfzeilen wird die Sichtbarkeit der darunter liegenden Inhaltsbereiche umgeschaltet. </p>
<p>Ich möchte die folgenden drei Situationen berücksichtigen:</p>
<ol>
<li>Beide Inhaltsbereiche sind geöffnet (sichtbar) und verfügen über Bildlaufleisten. In diesem Fall möchte ich, dass beide die Hälfte des verfügbaren Platzes einnehmen. </li>
<li>1 Content-Div ist mit oder ohne Bildlaufleisten geöffnet. In diesem Fall möchte ich, dass es den gesamten verfügbaren Platz oder den Platz, den es benötigt, einnimmt. </li>
<li>Beide Inhaltsdivs sind geschlossen. In diesem Fall möchte ich, dass sich das Titel-Div oben im Container befindet. </li>
</ol>
<h3>Implementierte Funktionen</h3>
<ul>
<li>Wenn beide Divs über Bildlaufleisten verfügen und geöffnet sind, wird der verfügbare Platz gleichmäßig verteilt. </li>
<li>Wenn einer geschlossen ist, füllt der andere den verfügbaren Platz aus. Wenn beides ausgeschaltet ist, wird nur der Titel angezeigt. </li>
</ul>
<h3>Nicht implementierte Funktionen</h3>
<ul>
<li>Wenn das untere Inhalts-Div geschlossen ist und das obere Inhalts-Div über Bildlaufleisten verfügt, wächst die Höhe des oberen Inhalts-Div nur auf die halbe Höhe des Containers. </li>
<li>Wenn beide Inhalts-Divs ohne Bildlaufleisten geöffnet sind, vergrößern sie sich auf 50 % der Höhe des Containers und erzeugen einen Leerraum zwischen dem Inhalts-Div und dem Titel-Div darunter. </li>
</ul>
<p>Dies ist die Struktur von HTML</p>
<pre class="brush:php;toolbar:false;"><div class='flex-container'>
<div id='header1' class='header'>
Kopfzeile 1
</div>
<div id='content1' class='header-content'>
<div class='item'>Lorem</div>
<div class='item'>Lorem</div>
<div class='item'>Lorem</div>
<div class='item'>Lorem</div>
<div class='item'>Lorem</div>
<div class='item'>Lorem</div>
<div class='item'>Lorem</div>
<div class='item'>Lorem</div>
<div class='item'>Lorem</div>
</div>
<div id='header2' class='header'>
Kopfzeile 2
</div>
<div id='content2' class='header-content'>
<div class='item'>Ipsum</div>
<div class='item'>Ipsum</div>
<div class='item'>Ipsum</div>
<div class='item'>Ipsum</div>
<div class='item'>Ipsum</div>
<div class='item'>Ipsum</div>
<div class='item'>Ipsum</div>
<div class='item'>Ipsum</div>
</div>
</div></pre>
<p>Das ist der Stil, den ich anwenden wollte. Bitte beachten Sie, dass ich Sass verwende. </p>
<pre class="brush:php;toolbar:false;">.flex-container {
Anzeige: Flex;
Flexrichtung: Spalte;
Höhe: 300px;
Breite: 150px;
Überlauf-y: auto;
}
.Header {
Anzeige: Flex;
align-items: center;
Mindesthöhe: 35 Pixel;
Hintergrundfarbe: #99e9f2;
Cursor: Zeiger;
}
.header-content {
Flexbasis: calc(50% - 35px);
Flexwachstum: 1;
Überlauf-y: auto;
Anzeige: Flex;
Flexrichtung: Spalte;
.Artikel {
Polsterung: 3px 12px;
Hintergrundfarbe: #e3fafc;
}
}</pre>
<p>Dies ist der Link zum Codestift. </p>
<h3>Dinge, die ich ausprobiert habe</h3>
<ul>
<li> Ich habe auch versucht, <code>max-heigth: calc(50% - 35px)</code> (Titelhöhe ist 35px) zu verwenden, was das Problem der wachsenden Inhaltsbereiche löste, die zu Leerzeichenlücken führten Dies sorgt auch dafür, dass, wenn ein anderes Inhalts-Div geschlossen wird, das Inhalts-Div nicht über diese Höhe hinaus wächst. </li>
<li>Verwenden Sie nur <code>flex-grow: 1</code> anstelle von <code>flex-basis: calc(50% - 35px)</code> calc(50% - 35px)</code> kann dazu führen, dass das Inhalts-Div um mehr als etwa 50 % der Containerhöhe wächst. Wenn ein Inhalts-Div jedoch mehr Elemente enthält, wird die Höhe des Inhalts-Divs ungleichmäßig bei unebenem Platzangebot gleichmäßig verteilen. </li>
</ul><p><br /></p>
这样就可以实现你想要做的事情。你可以根据需要进行修改: