Mengapa item lentur tidak boleh mengecil kepada kurang daripada saiz kandungan?
P粉432906880
P粉432906880 2023-08-21 22:36:03
0
2
507
<p>Saya mempunyai 4 lajur flexbox dan semuanya berfungsi dengan baik, tetapi apabila saya menambah beberapa teks pada satu lajur dan menetapkannya kepada saiz fon yang besar, ia menjadikan lajur lebih lebar daripada yang sepatutnya disebabkan oleh sifat flex. </p> <p>Saya cuba menggunakan <code>word-break: break-word</code> dan ia membantu, tetapi apabila saya mengubah saiz lajur kepada lebar yang sangat kecil, huruf dalam teks dipecahkan kepada beberapa baris (satu huruf setiap baris), tetapi lebar lajur tidak akan lebih kecil daripada saiz huruf. </p> <p>Tonton video ini (Pada mulanya, lajur pertama adalah yang paling kecil, tetapi apabila saya mengubah saiz tetingkap, ia menjadi lajur terluas. Saya hanya mahu sentiasa menghormati tetapan fleksibel; saiz fleksibel ialah 1:3: 4 :4)</p> <p>Saya tahu bahawa menetapkan saiz fon dan padding lajur kepada nilai yang lebih kecil akan membantu... tetapi adakah terdapat sebarang penyelesaian lain? </p> <p>Saya tidak boleh menggunakan <code>overflow-x: hidden</code>. </p> <p>JSFiddle</p> <p><br /></p> <pre class="brush:css;toolbar:false;">.container { paparan: flex; lebar: 100% } .col { ketinggian min: 200px; padding: 30px; putus-kata: putus-kata } .col1 { lentur: 1; latar belakang: oren; saiz fon: 80px } .col2 { lentur: 3; latar belakang: kuning } .col3 { lentur: 4; latar belakang: biru langit } .col4 { lentur: 4; latar belakang: merah }</pre> <pre class="brush:html;toolbar:false;"><div class="container"> <div class="col col1">Lorem ipsum dolor</div> <div class="col col2">Lorem ipsum dolor</div> <div class="col col3">Lorem ipsum dolor</div> <div class="col col4">Lorem ipsum dolor</div> </div></pre> <p><br /></p>
P粉432906880
P粉432906880

membalas semua(2)
P粉440453689

Saya mendapati ini telah menyebabkan saya mengalami masalah berkali-kali sejak beberapa tahun lalu untuk kedua-dua flex dan grid, jadi saya mencadangkan perkara berikut:

* { min-width: 0; min-height: 0; }

Jika anda memerlukan tingkah laku ini, gunakan sahaja min-width: automin-height: auto.

Malah, anda juga boleh menambah saiz kotak untuk menjadikan semua susun atur lebih munasabah:

* { box-sizing: border-box; min-width: 0; min-height: 0; }

Adakah sesiapa tahu jika terdapat sebarang akibat yang pelik? Dalam beberapa tahun menggunakan kaedah di atas, saya tidak mengalami sebarang masalah. Malah, saya tidak dapat memikirkan sebarang situasi di mana saya ingin susun atur daripada kandungan ke luar ke dalam flex/grid, dan bukannya dari flex/grid ke dalam ke kandungan --- dan jika situasi sedemikian wujud, ia sudah tentu jarang berlaku. Jadi ini terasa seperti lalai yang teruk. Tetapi mungkin saya kehilangan sesuatu?

P粉752479467

Saiz minimum automatik untuk projek Flex

Anda menghadapi tetapan lalai flexbox.

Item fleksibel tidak boleh lebih kecil daripada saiz kandungannya pada paksi utama.

Tetapan lalai ialah...

  • min-width: auto
  • min-height: auto

... Berkenaan untuk melenturkan item dalam arah baris dan lajur masing-masing.

Anda boleh menetapkan item flex kepada:

  • min-width: 0
  • min-height: 0
  • overflow: hidden(或任何其他值,除了visible)

Spesifikasi Flexbox

Mengenai autonilai...

Dalam erti kata lain:

  • min-width: automin-height: auto默认仅在overflowvisible dan
  • hanya terpakai secara lalai apabila limpahan kelihatan.
  • overflow的值不是visible,则min-size属性的值为0Jika
  • .
  • overflow: hidden可以替代min-width: 0min-height: 0Oleh itu, overflow: hidden boleh menggantikan
  • dan
.

    dan...
  • Algoritma saiz minimum hanya berfungsi pada gelendong. min-height: auto
  • Sebagai contoh, item fleksibel dalam bekas berorientasikan baris tidak mendapat
  • secara lalai.
    • Untuk penjelasan yang lebih terperinci, lihat siaran ini:
    • lebar min ditunjukkan secara berbeza dalam arah lentur: baris dan arah lentur: lajur

Anda telah menggunakan lebar min: 0 tetapi projek anda masih tidak akan mengecut?

Bekas Flex Bersarang

min-width: auto / min-height: auto

Jika anda bekerja dengan item flex pada berbilang peringkat struktur HTML anda, anda mungkin mahu mengatasi

/min-width: auto的较高级别flex项目可以阻止下方嵌套的具有min-width: 0 lalai pada item peringkat lebih tinggi.

Pada asasnya, item flex tahap yang lebih tinggi dengan

menghalang item bersarang di bawah dengan
sifat CSS ruang putih bercanggah dengan reka letak fleksibel


Demo yang disemak semula

.container {
  display: flex;
}

.col {
  min-height: 200px;
  padding: 30px;
  word-break: break-word
}

.col1 {
  flex: 1;
  background: orange;
  font-size: 80px;
  min-width: 0;   /* NEW */
}

.col2 {
  flex: 3;
  background: yellow
}

.col3 {
  flex: 4;
  background: skyblue
}

.col4 {
  flex: 4;
  background: red
}
<div class="container">
  <div class="col col1">Lorem ipsum dolor</div>
  <div class="col col2">Lorem ipsum dolor</div>
  <div class="col col3">Lorem ipsum dolor</div>
  <div class="col col4">Lorem ipsum dolor</div>
</div>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan