Item adik beradik adalah terhad dalam reka letak flex/grid
P粉134288794
P粉134288794 2023-08-24 12:52:48
0
2
459
<p>Saya mempunyai dua elemen adik-beradik, setiap satu mengandungi kandungan dinamik. </p> <pre class="brush:php;toolbar:false;"><div class="flex"> <div class="sibling-1"></div> <div class="sibling-2"></div> </div></pre> <p>Dalam sesetengah kes, <code>sibling-1</code> akan mengandungi lebih banyak kandungan daripada <code>sibling-2</code>, dan sebaliknya. Saya mahu ketinggian elemen kedua <code>sibling-2</code> sentiasa sama dengan ketinggian <code>sibling-1</code>. Jika ketinggian <code>sibling-2</code> lebih tinggi daripada ketinggian <code>sibling-1</code>, ia akan melimpahi <code>flex</code> . </p> <p>Adakah terdapat cara untuk mencapai kesan ini menggunakan Flexbox? </p>
P粉134288794
P粉134288794

membalas semua(2)
P粉322918729

Pada asasnya tidak. Ciri ketinggian fleksibel adalah berdasarkan ketinggian bekas, bukan sebarang elemen adik beradik tertentu.

Jadi, abang elemen 1 dan abang elemen 2 boleh sentiasa sama tinggi.

Walau bagaimanapun, flexbox tidak mempunyai mekanisme terbina dalam untuk mengekang sesuatu item supaya sama tinggi dengan elemen adik beradik.

Pertimbangkan untuk menggunakan ciri penentududukan JavaScript atau CSS.

Berikut ialah contoh menggunakan kedudukan mutlak:

.flex {
  display: flex;
  width: 200px;
  position: relative;
}

.flex>div {
  flex: 0 0 50%;
  border: 1px solid black;
  box-sizing: border-box;
}

.sibling-2 {
  position: absolute;
  left: 50%;
  top: 0;
  bottom: 0;
  right: 0;
  overflow: auto;
}
<div class="flex">
  <div class="sibling-1">text<br>text<br>text<br>text<br>text<br>text<br></div>
  <div class="sibling-2">text<br>text<br>text<br>text<br>text<br>text<br>text<br>text<br>text<br>text<br>text<br>text<br>text<br></div>
</div>

jsFiddle

P粉008829791

Ya, boleh. Kekalkan ketinggian maksimum yang ditetapkan oleh nod adik-beradik dan tetapkan flex-basis: 0flex-grow: 1 nod lain supaya mengikut spesifikasi ia akan berkembang ke ketinggian yang sama dengan adik-beradik. Tiada kedudukan mutlak. Tiada ketinggian ditetapkan pada mana-mana elemen.

main {
  display: flex;
}

section {
  display: flex;
  flex-direction: column;
  width: 7em;
  border: thin solid black;
  margin: 1em;
}

:not(.limiter)>div {
  flex-basis: 0px;
  flex-grow: 1;
  overflow-y: auto;
}
<main>
  <section>
    <div>我更长,会滚动溢出。在流动文本中,在流动文本中,在流动文本中,在流动文本中,在流动文本中,在流动文本中,在流动文本中,在流动文本中,在流动文本中,在流动文本中,在流动文本中,在流动文本中,在流动文本中,在流动文本中,在流动文本中,在流动文本中,在流动文本中
      在流动文本中,在流动文本中,在流动文本中,在流动文本中,在流动文本中,在流动文本中,在</div>
  </section>

  <section class="limiter">
    <div>每个父节点的兄弟节点与我的高度相匹配。在流动文本中,在流动文本中,在流动文本中,在流动文本中,在流动文本中,在流动文本中,在流动文本中,在流动文本中,在流动文本中,在流动文本中,在流动文本中,在流动文本中,在流动文本中,在流动文本中,在流动文本中,在流动文本中</div>
  </section>

  <section>
    <div>我虽然较短,但仍然与高度相匹配。在流动文本中,在流动文本中,在流动文本中,在流动文本中,在流动文本中,在流动文本中,在流动文本中,在流动文本中</div>
  </section>
</main>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan