Bagaimana untuk Mengekalkan Ketinggian Bekas dengan `display: inline-block` dan `position: absolute` dalam CSS?

Linda Hamilton
Lepaskan: 2024-10-25 14:26:17
asal
108 orang telah melayarinya

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

CSS: display:inline-block and positioning:absolute

Soalan ini meneroka gelagat elemen CSS apabila menggunakan kedua-dua paparan:inline- blok dan kedudukan: mutlak. Kod HTML berikut disediakan:

<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>
Salin selepas log masuk

Dengan CSS berikut:

<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>
Salin selepas log masuk

Isu yang dibangkitkan ialah elemen dengan kedudukan mutlak menjadikan kotak yang mengandunginya kehilangan ketinggiannya. Soalan mencari penyelesaian kepada masalah ini sambil mengekalkan kedudukan mutlak dalam kotak .bahagian.

Memahami Isu

Apabila menggunakan position:absolute;, kedudukan elemen dialih keluar daripada aliran halaman biasa . Oleh itu, ia tidak lagi menjejaskan reka letak elemen yang mengandunginya, termasuk ketinggiannya. Oleh itu, elemen bekas, dalam kes ini, kotak .section, kehilangan jejak ketinggiannya dan mengambil ketinggian sifar melainkan dinyatakan sebaliknya.

Selain itu, paparan:sebaris-blok; tidak boleh digunakan pada elemen yang diletakkan secara mutlak kerana kedudukan mutlak mengatasi mod paparan ini, dengan berkesan menetapkannya kepada display:block.

Menyelesaikan Isu Ketinggian

Untuk menyelesaikan masalah ketinggian, seseorang mesti menetapkan secara eksplisit ketinggian kotak .seksyen. Walau bagaimanapun, mengambil kira reka letak yang diingini, menggunakan kedudukan mutlak mungkin bukan pendekatan yang paling sesuai.

Penyelesaian Alternatif

Susun atur yang diingini, dengan lajur kedua dijajarkan dengan kedudukan tetap dalam setiap blok, boleh dicapai tanpa menggunakan kedudukan mutlak. Berikut ialah penyelesaian alternatif:

<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>
Salin selepas log masuk
<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>
Salin selepas log masuk

Dengan menambahkan penanda tambahan untuk mewakili tahap lekukan dan menggunakan teknik kedudukan relatif dengan pelapik, kami boleh mencapai reka letak yang diingini dengan mudah.

Atas ialah kandungan terperinci Bagaimana untuk Mengekalkan Ketinggian Bekas dengan `display: inline-block` dan `position: absolute` dalam CSS?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!