Pourquoi les éléments flexibles ne peuvent-ils pas être réduits à une taille inférieure à la taille du contenu ?
P粉432906880
2023-08-21 22:36:03
<p>J'ai 4 colonnes flexbox et tout fonctionne bien, mais lorsque j'ajoute du texte à une colonne et que je la règle sur une grande taille de police, la colonne est plus large qu'elle ne devrait l'être en raison de la propriété flex. </p>
<p>J'ai essayé d'utiliser <code>word-break: break-word</code> et cela m'a aidé, mais lorsque j'ai redimensionné les colonnes à une très petite largeur, les lettres du texte étaient divisées en plusieurs lignes (une lettre par ligne), mais la largeur de la colonne ne sera pas inférieure à la taille d'une lettre. </p>
<p>Regardez cette vidéo (Au début, la première colonne est la plus petite, mais lorsque je redimensionne la fenêtre, elle devient la colonne la plus large. Je veux juste toujours respecter les paramètres de flexion ; la taille du flex est de 1:3 : 4 :4)</p>
<p>Je sais que définir la taille de la police et le remplissage des colonnes sur des valeurs plus petites aidera... mais existe-t-il une autre solution ? </p>
<p>Je ne peux pas utiliser <code>overflow-x: Hidden</code>. </p>
<p>JSFiddle</p>
<p><br /></p>
<pre class="brush:css;toolbar:false;">.container {
affichage : flexible ;
largeur : 100%
}
.col {
hauteur minimale : 200 px ;
remplissage : 30 px ;
saut de mot : briser le mot
}
.col1 {
flexion : 1 ;
fond : orange ;
taille de la police : 80px
}
.col2 {
flexion : 3 ;
fond : jaune
}
.col3 {
flexion : 4 ;
fond : bleu ciel
}
.col4 {
flexion : 4 ;
fond : rouge
}</pré>
<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>
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 :
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 :
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 ?
Taille minimale automatique pour les projets Flex
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
)Spécifications Flexbox
À propos de
auto
valeur...En d'autres termes :
min-width: auto
和min-height: auto
默认仅在overflow
为visible
etoverflow
estvisible
.overflow
的值不是visible
,则min-size属性的值为0
Sioverflow: hidden
可以替代min-width: 0
和min-height: 0
Par conséquent,overflow: Hidden
peut remplaceret...-
- L'algorithme de taille minimale ne fonctionne que sur les broches.
Par exemple, les éléments flexibles dans des conteneurs orientés lignes ne reçoivent pas - par défaut.
- Pour une explication plus détaillée, voir cet article :
min-width est rendu différemment dans flex-direction: row et flex-direction: column
min-height: auto
Vous avez appliqué min-width : 0 mais votre projet ne rétrécit toujours pas ?
Conteneurs flexibles imbriqués
Si vous travaillez avec des éléments flexibles sur plusieurs niveaux de votre structure HTML, vous souhaiterez peut-être remplacer la valeur par défautmin-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 avecde rétrécir.-
Exemple :
- Les éléments flexibles ne peuvent pas être réduits à une taille inférieure à leur contenu
- Adapter les éléments enfants aux éléments parents
La propriété CSS des espaces blancs est en conflit avec la mise en page flexible
Considérations relatives au rendu du navigateur
intervention🎜🎜.) En conséquence, de nombreuses personnes voient leurs mises en page (en particulier les barres de défilement souhaitées) fonctionner comme prévu dans Chrome, mais pas dans Firefox/Edge. Pour des informations plus détaillées, voir ici : 🎜différences flex-shrink entre Firefox et Chrome🎜🎜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 de0
dans certaines situations en fonction d'un algorithme mystérieux. (C'est probablement ce qu'ils appellentIE11
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
.Démo révisée