Heim > Web-Frontend > CSS-Tutorial > Hauptteil

Wie behalte ich die Containerhöhe mit „display: inline-block' und „position: absolute' in CSS bei?

Linda Hamilton
Freigeben: 2024-10-25 14:26:17
Original
108 Leute haben es durchsucht

How to Maintain Container Height with `display: inline-block` and `position: absolute` in CSS?

CSS: display:inline-block und positionierung:absolute

Diese Frage untersucht das Verhalten von CSS-Elementen bei Verwendung von display:inline- Block und Positionierung: absolut. Der folgende HTML-Code wird bereitgestellt:

<code class="html"><div class="section">
  <span class="element-left">some text</span>
  <span class="element-right-a">some text</span>
</div>

<div class="section">
  <span class="element-left">some text</span>
  <span class="element-right-a">some more text to force line wrapping</span>
</div>

<div class="section">
  <span class="element-left">some text</span>
  <span class="element-right-b">some text</span>
</div>

<div class="section">
  <span class="element-left">some text</span>
  <span class="element-right-b">some more text to force line wrapping</span>
</div>

<div class="section">
  <span class="element-left">some text</span>
  <span class="element-right-b">some more text to force line wrapping</span>
</div></code>
Nach dem Login kopieren

Mit dem folgenden CSS:

<code class="css">.section {
  display: block;
  width: 200px;
  border: 1px dashed blue;
  margin-bottom: 10px;
}
.element-left,
.element-right-a,
.element-right-b {
  display: inline-block;
  background-color: #ccc;
  vertical-align: top;
}
.element-right-a,
.element-right-b {
  max-width: 100px;
}
.element-right-b {
  position: absolute;
  left: 100px;
}</code>
Nach dem Login kopieren

Das aufgeworfene Problem besteht darin, dass das Element mit absoluter Positionierung führt dazu, dass sein enthaltender Kasten seine Höhe verliert. Die Frage sucht nach einer Lösung für dieses Problem unter Beibehaltung der absoluten Positionierung innerhalb des .section-Felds.

Verstehen des Problems

Bei Verwendung von position:absolute; wird die Position des Elements aus dem normalen Seitenfluss entfernt . Daher hat es keinen Einfluss mehr auf das Layout des enthaltenden Elements, einschließlich seiner Höhe. Daher verliert das Containerelement, in diesem Fall die .section-Box, den Überblick über seine Höhe und nimmt eine Höhe von Null an, sofern nicht anders angegeben.

Zusätzlich: display:inline-block; ist nicht auf absolut positionierte Elemente anwendbar, da die absolute Positionierung diesen Anzeigemodus außer Kraft setzt und ihn effektiv auf display:block setzt.

Das Höhenproblem lösen

Um das Höhenproblem zu lösen, muss man explizit festlegen Höhe des .Abschnittskastens. In Anbetracht des gewünschten Layouts ist die Verwendung der absoluten Positionierung jedoch möglicherweise nicht der geeignetste Ansatz.

Alternative Lösung

Das gewünschte Layout, bei dem die zweite Spalte an einer festen Position innerhalb jedes Blocks ausgerichtet ist, kann ohne absolute Positionierung erreicht werden. Hier ist eine alternative Lösung:

<code class="html"><div class="section">
  <span class="element-left"><span class="indent-0">some text</span></span>
  <span class="element-right">some text</span>
</div>

<div class="section">
  <span class="element-left"><span class="indent-1">some text</span></span>
  <span class="element-right">some text</span>
</div>

<div class="section">
  <span class="element-left"><span class="indent-2">some text</span></span>
  <span class="element-right">some text</span>
</div></code>
Nach dem Login kopieren
<code class="css">.section span {
  display: inline-block;
}
.element-left {
  width: 200px;
}
.indent-1 {
  padding: 10px;
}
.indent-2 {
  padding: 20px;
}
.element-right {
  width: 150px;
}</code>
Nach dem Login kopieren

Durch das Hinzufügen zusätzlicher Markierungen zur Darstellung der Einrückungsebene und die Verwendung relativer Positionierungstechniken mit Auffüllung können wir leicht das gewünschte Layout erreichen.

Das obige ist der detaillierte Inhalt vonWie behalte ich die Containerhöhe mit „display: inline-block' und „position: absolute' in CSS bei?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!