J'essaie de mettre en place une disposition flexbox avec trois colonnes où les colonnes gauche et droite ont une largeur fixe, et la colonne centrale fléchit pour remplir l'espace disponible.
Malgré la configuration des dimensions des colonnes, elles semblent toujours rétrécir à mesure que la fenêtre se rétrécit.
Quelqu'un sait comment accomplir cela?
Une autre chose que je devrai faire est de masquer la colonne de droite en fonction de l'interaction de l'utilisateur, auquel cas la colonne de gauche conserverait toujours sa largeur fixe, mais la colonne centrale remplirait le reste de l'espace.
#container {
display: flex;
justify-content: space-around;
align-items: stretch;
max-width: 1200px;
}
.column.left {
width: 230px;
}
.column.right {
width: 230px;
border-left: 1px solid #eee;
}
.column.center {
border-left: 1px solid #eee;
}
<div id="container">
<div class="column left">
<p>Anxiety was a blog series that ran in the New York Times Opinion section from January 2012 to July 2013. It featured essays, fiction, and art by a wide range of contributors that explored anxiety from scientific, literary, and artistic perspectives.</p>
</div>
<div class="column center">
<img src="http://i.imgur.com/60PVLis.png" width="100" height="100" alt="">
</div>
<div class="column right">
Balint Zsako
<br/> Someone’s Knocking at My Door
<br/> 01.12.13
</div>
</div>
Voici un JSFiddle: http://jsfiddle.net/zDd2g/185/
Réponses:
Au lieu d'utiliser
width
(ce qui est une suggestion lors de l'utilisation de flexbox), vous pouvez utiliserflex: 0 0 230px;
ce qui signifie:0
= ne grandit pas (raccourci pourflex-grow
)0
= ne pas rétrécir (raccourci pourflex-shrink
)230px
= commencer à230px
(raccourci pourflex-basis
)ce qui signifie: toujours l'être
230px
.Voir violon , merci @TylerH
Oh, et vous n'avez pas besoin du
justify-content
etalign-items
ici.la source
flex-grow
défini (comme par exemple 1). Violon mis à jour .flex-grow: 1
est toujours nécessaire pour la colonne fluide dans Chrome 53. Sinon, cela ne prendrait pas le reste de la largeur. Je suppose que la réponse devrait tenir compte de ce fait.flex: 0 0 200px
agit de la même manière quewidth: 200px; flex-shrink: 0
.Un réglage initial d'un conteneur flexible est
flex-shrink: 1
. C'est pourquoi vos colonnes rétrécissent.Peu importe la largeur que vous spécifiez ( cela pourrait être
width: 10000px
),flex-shrink
la largeur spécifiée peut être ignorée et les éléments flexibles ne peuvent pas déborder du conteneur.Vous devrez désactiver la réduction. Voici quelques options:
OU
OU, comme recommandé par la spécification:
Plus de détails ici: Quelles sont les différences entre flex-base et largeur?
Essaye ça:
Cela permettra à la colonne centrale de consommer l'espace disponible, y compris l'espace de ses frères et sœurs lorsqu'ils sont supprimés.
Violon révisé
la source
flex: 1;
au centrediv
était suffisant, merci.La compatibilité avec les anciens navigateurs peut être un frein, alors soyez avisé.
Si ce n'est pas un problème, allez-y. Exécutez l'extrait. Accédez à la vue pleine page et redimensionnez. Le centre se redimensionnera sans modifier les divs gauche ou droite.
Modifiez les valeurs gauche et droite pour répondre à vos besoins.
Je vous remercie.
J'espère que cela t'aides.
la source