Maison > Questions et réponses > le corps du texte
P粉4404536892023-08-22 12:47:17
J'ai constaté que cela m'a causé des problèmes à plusieurs reprises au cours des dernières années, tant pour le flex que pour la grille, je suggère donc ce qui suit :
* { min-width: 0; min-height: 0; }
Si vous avez besoin de ce comportement, utilisez simplement min-width: auto
或min-height: auto
.
En fait, vous pouvez également ajouter des dimensions de boîte pour rendre toutes les mises en page plus raisonnables :
* { box-sizing: border-box; min-width: 0; min-height: 0; }
Est-ce que quelqu'un sait s'il y a des conséquences étranges ? Depuis plusieurs années d'utilisation de la méthode ci-dessus, je n'ai eu aucun problème. En fait, je ne peux penser à aucune situation dans laquelle je voudrais mettre en page du contenu vers l'extérieur en flex/grid, plutôt que de flex/grid vers l'intérieur en contenu --- et si une telle situation existe, elle est certainement rare. Cela ressemble donc à un mauvais défaut. Mais peut-être qu'il me manque quelque chose ?
P粉7524794672023-08-22 10:57:07
Vous rencontrez les paramètres par défaut de flexbox.
Les éléments Flex ne peuvent pas être plus petits que la taille de leur contenu sur l'axe principal.
Le paramètre par défaut est...
min-width: auto
min-height: auto
...Applicable aux éléments flexibles respectivement dans le sens des lignes et des colonnes.
Vous pouvez définir l'élément flexible sur :
min-width: 0
min-height: 0
overflow: hidden
(或任何其他值,除了visible
)À propos de auto
valeur...
En d'autres termes :
min-width: auto
和min-height: auto
默认仅在overflow
为visible
et overflow
est visible
. overflow
的值不是visible
,则min-size属性的值为0
Sioverflow: hidden
可以替代min-width: 0
和min-height: 0
Par conséquent, overflow: Hidden
peut remplacer
min-height: auto
Vous avez appliqué min-width : 0 mais votre projet ne rétrécit toujours pas ?
Conteneurs flexibles imbriquésmin-width: auto
/ min-height: auto
/min-width: auto
的较高级别flex项目可以阻止下方嵌套的具有min-width: 0
sur les éléments de niveau supérieur.
Fondamentalement, un élément flexible de niveau supérieur avec
empêche l'élément imbriqué ci-dessous avecConsidérations relatives au rendu du navigateur
min-width: 0
/ min-height: 0
的默认值,要么(2)根据某个神秘的算法在某些情况下自动应用0
Chrome contre Firefox/Edge
Depuis 2017, Chrome semble (1) revenir à la valeur par défaut de / ou (2) appliquer automatiquement la valeur par défaut de 0
dans certaines situations en fonction d'un algorithme mystérieux. (C'est probablement ce qu'ils appellent
IE11
Comme indiqué dans la spécification, la valeur 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>