Rumah > Soal Jawab > teks badan
P粉4404536892023-08-22 12:47:17
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: auto
或min-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粉7524794672023-08-22 10:57:07
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
)Mengenai auto
nilai...
Dalam erti kata lain:
min-width: auto
和min-height: auto
默认仅在overflow
为visible
dan limpahan
kelihatan
. overflow
的值不是visible
,则min-size属性的值为0
Jikaoverflow: hidden
可以替代min-width: 0
和min-height: 0
Oleh itu, overflow: hidden
boleh menggantikan
min-height: auto
Anda telah menggunakan lebar min: 0 tetapi projek anda masih tidak akan mengecut?
Bekas Flex Bersarangmin-width: auto
/ min-height: auto
/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 denganPertimbangan pemaparan penyemak imbas
min-width: 0
/ min-height: 0
的默认值,要么(2)根据某个神秘的算法在某些情况下自动应用0
Chrome lwn. Firefox/Edge
Sejak 2017, Chrome nampaknya sama ada (1) kembali kepada nilai lalai / atau (2) secara automatik menggunakan nilai lalai 0
dalam situasi tertentu berdasarkan beberapa algoritma misteri. (Ini mungkin apa yang mereka panggil
IE11
Seperti yang dinyatakan dalam spesifikasi, nilai min-width
和min-height
属性的auto
值是“新的”。这意味着某些浏览器可能仍然默认呈现0
值,因为它们在值更新之前实现了flex布局,并且因为0
是CSS 2.1中min-width
和min-height
的初始值。IE11是其中之一。其他浏览器已经更新到了在flexbox规范中定义的较新的auto
.
.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>