Prévenir flex éléments de déborder un conteneur
Comment puis-je faire mon flex élément (article
dans cet exemple), ce qui a flex-grow: 1;
pas à débordement, c'est flex parent/conteneur (main
)?
Dans cet exemple article
est juste le texte, si elle contient d'autres éléments (table
s, etc).
CSS:
main, aside, article {
margin: 10px;
border: solid 1px #000;
border-bottom: 0;
height: 50px;
}
main {
display: flex;
}
aside {
flex: 0 0 200px;
}
article {
flex: 1 0 auto;
}
HTML:
<main>
<aside>x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x </aside>
<article>don't let flex item overflow container.... y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y y </article>
</main>
Vous devez vous connecter pour publier un commentaire.
Votre flex éléments ont
Qui signifie:
La première débutera à
200px
de large.Il n'y aura pas de croître ni décroître.
La seconde va commencer à la largeur donnée par le contenu.
Ensuite, si l'espace est disponible, il va croître à couvrir.
Sinon, il ne rétrécit pas.
Pour éviter horizontale de débordement, vous pouvez:
flex-basis: 0
et puis laissez-les grandir avec un positifflex-grow
.flex-shrink
laisser rétrécir si il n'y a pas assez d'espace.Pour empêcher le débordement vertical, vous pouvez
min-height
au lieu deheight
pour permettre la flexion des éléments de croître plus si nécessaireoverflow
différent visible sur le flex élémentsoverflow
différent visible sur le conteneur flexPar exemple,
CSS:
HTML:
<table>
à l'intérieur de la<article>
même envelopper la table avecdiv
etoverflow: auto;
Au lieu de
flex: 1 0 auto
suffit d'utiliserflex: 1
CSS:
HTML:
flex: 1
est commeflex: 1 1 0
.flex-shrink
est alors, puisque je suppose que je ne le souhaitez réduire. Aussi @Oriol je pense queflex: 1
estflex: 1 1 auto
.flex: 1 1 0
. Src: w3.org/TR/css-flexbox-1/#flex-propertyauto
comme valeur initiale pour la 3ème param?flex: 1
Une solution simple est d'utiliser
overflow
valeurs autres quevisible
de rendre le texte en flex base de la largeur de réinitialisation comme prévu.Ici avec la valeur
auto
le texte passe comme prévu et le contenu de l'article n'a pas de débordement du récipient principal.Aussi, l'article
flex
valeur doit avoir soit unauto
base ET être en mesure de réduire OU, seulement se développer ET explicite0
baseCSS:
HTML:
white-space: nowrap
. MerciJe sais que c'est vraiment la fin, mais pour moi, j'ai trouvé que l'application de
flex-basis: 0;
à l'élément qui l'a empêché de craquer.