J'ai un tas de largeur fixe Ce que j'aimerais faire, est d'élargir tout des divs de la rangée de manière uniforme pour remplir la rangée, En d'autres termes, je veux avoir une largeur minimale sur Voici mon échantillon HTML: P> div code> d'éléments stylés pour flager en ligne à l'aide de Type d'affichage en ligne code>. Cela laisse un espace vide à la fin de la ligne (où le prochain div code> n'a pas pu être monté et enveloppé à la ligne suivante). div des éléments code> et en forme les plus nombreux que possible dans une seule ligne et remplissez la ligne entière. p> |----------------- Container -----------------|
| |-------- 1 --------| |-------- 2 --------| |
| |-------- 3 --------| |-------- 4 --------| |
| |-------- 5 --------| |-------- 6 --------| |
| |------------------- 7 -------------------| |
3 Réponses :
Vous pouvez faire de deux manières (si vous savez combien de fois. Il y a):
Exemple 1: strong>
Flotter les œuvres .items, voir Fiddle http://jsfiddle.net/david_knowle/wh5bp/ p> } p> Les éléments en ligne sont sensibles à l'espace blanc entre le pauses de ligne. Notez aucun espaces entre les .items. http://jsfiddle.net/david_knowles/wh5bp/1/ p> <div id="container">
<div class="item">Item One</div><div class="item">Item Two</div><div class="item">Item Three</div><div class="item">Item Four</div>
</div>
.item {
width: 23%;
margin: 0 1%;
display:inline-block;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
box-sizing: border-box;
border: 1px solid red;
Où est la taille minimale pour les articles alors? Je sais comment utiliser le pourcentage de dimensionnement. Ce n'est pas ce que je cherche. Veuillez lire la question plus attentivement. Je souhaite que chacun des éléments ait une taille minimale et envelopper à la ligne suivante s'ils ne correspondent pas à une seule ligne.
Je ne comprends pas ce que tu veux dire par "envelopper à la ligne suivante". Ce qui devrait envelopper à la ligne suivante? le texte à l'intérieur ou le .item? Et quelle est la large si cet article enveloppé devient-il maintenant? Un croquis visuel pourrait aider ou votre propre violon.
Yeap, cela explique beaucoup :-) Vous allez avoir besoin de jus de JS pour résoudre ce problème à coup sûr. Je serais intéressé de voir ce que vous venez.
Si vous présentez Flexbox en tant que solution jamais i> Utilisez les anciennes propriétés Flexbox par elles-mêmes.
Merci pour l'information et les efforts. Votre message est correct et comprend de bons pointeurs, et cela m'a été utile, mais je marquais la réponse de l'utilisateur1846192 comme accepté, car il dispose d'informations et de comparaisons plus détaillées, pour les futurs lecteurs.
Vous pouvez le faire avec le Flexbox Model , il y en a quelques Numérapez cependant.
Il y a un ancien modèle Flexbox, qui rend les choses en quelque sorte compliquées. Actuellement chrome et opéra supportez le nouveau modèle et les autres navigateurs ont un "support partiel", ce qui signifie qu'ils pourraient Soutenir: p>
avec tout ce qui est disponible aujourd'hui, j'ai pu mettre quelque chose ensemble, ce qui fonctionne dans Ce lien explique pourquoi il ne fonctionne pas dans Firefox (Gecko) - Non pris en charge. Firefox ne prend en charge que Flexbox une seule ligne. P>
BlockQuote> Je ne suis pas sûr à 100% à ce sujet, mais il me semble qu'ils n'ont jamais pris en charge la propriété Ce Après tout cela, voici un JSFIDDLE qui fait le travail aussi bien que possible, selon mes recherches récentes. Cela semble être le meilleur que vous puissiez faire dans pure CSS + HTML avec le support de navigateur actuel. P> Si vous voulez quelque chose de mieux Modifier strong> Comme @Cimmanon souligne dans les commentaires, pour obtenir ce travail dans les anciens navigateurs, ils auraient besoin de soutien Le CSS:. P> flex-wrap code>: p>
flex-wrap code> même dans les versions plus anciennes. Corrigez-moi si je me trompe, à quiconque avec une version Flex-wrap code> La propriété est celle qui fait que la magie multiligne se produise dans la plupart des autres navigateurs . La prévision est que Box-Pack Code> et Box-Orient CODE> figure sur la liste des propriétés prises en charge de Flexiejs, ce sont les propriétés qui font ce travail sur plus ancienne boîte lignes: multiple code> , qu'ils ne le font pas. Donc, cela ne va pas au travail sur les anciennes versions de iOS strong>, Safari strong> et Firefox strong>. Je suppose que cela explique pourquoi Firefox 20 strong> ne dispose pas d'une ancienne mise en œuvre à se replier sur. Étant donné que FlexieJS ne prend pas en charge boîte lignes: multiples code> soit, sa source est probablement ne va pas être d'une grande aide à essayer de résoudre ce problème. La rédaction de votre propre solution JS semble être la seule solution en ce moment strong>. Le développeur de FlexieJS travaille sur un polyfill pour la nouvelle de spécification. Cela devrait inclure un code pour fixer le multiligne dans les anciens navigateurs. Il ne semble pas comme il n'y a aucune au moment même. Si vous allez écrire quelque chose, peut-être vous pouvez le contacter pour quelques idées. le passer votre code si vous le faire fonctionner. Si vous êtes chanceux, il a obtenu quelque chose qui est déjà pas sur GitHub encore p> #container {
margin: 100px;
padding: 10px;
border: 1px solid blue;
display: -webkit-box; /* iOS 6-, Safari 3.1-6 */
display: -moz-box; /* Firefox 19- */
display: -ms-flexbox; /* IE 10 */
display: -webkit-flex; /* Chrome */
display: flex; /* Opera 12.1, Firefox 20+ */
/* iOS 6-, Safari 3.1-6 */
-webkit-box-orient: horizontal;
-webkit-box-pack: justify;
-webkit-lines: multiple; /* Only here for informative purpose, this line is what should have made it work, it has never been implemented */
/* Firefox 19- */
-moz-flex-flow: row wrap;
-moz-justify-content: space-between;
-moz-box-lines: multiple; /* Only here for informative purpose, this line is what should have made it work, it has never been implemented */
/* Chrome */
-webkit-flex-flow: row wrap;
-webkit-justify-content: space-between;
/* IE10 */
-ms-flex-flow: row wrap;
-ms-justify-content: space-between;
/* Opera 12.1, Firefox 20+ */
flex-flow: row wrap;
justify-content: space-between;
}
.item {
margin: 10px;
width: 300px;
border: 1px solid red;
-webkit-box-flex: auto; /* iOS 6-, Safari 3.1-6 */
-moz-box-flex: 1.0; /* Firefox 19- */
-webkit-flex: auto; /* Chrome */
-ms-flex: auto; /* IE10 */
flex: auto; /* Opera 12.1, Firefox 20+ */
}
Il y a beaucoup d'informations ici pour rendre votre réponse impressionnante, mais cela n'est pas reflété dans votre CSS fourni. Étant donné qu'aucun navigateur implémente Box-lignes: multiple code> (nécessaire pour l'emballage dans la spécification de 2009), il va se retrouver dans la moitié des navigateurs que vous avez fournis des préfixes / propriétés pour.
Merci ou l'information, je suppose que cela explique pourquoi Firefox 20 n'a pas de mise en œuvre plus ancienne à relever.
Merci pour les informations détaillées. IE10 se comporte exactement comme je m'attends, c'est cool. Mais j'ai finalement décidé de ne pas utiliser cette spécification de pointe pour le moment, car mes utilisateurs finaux ne sont pas aussi à jour! Mais il est bon d'être au courant de ce "modèle Flexbox".
C'est un travail pour Flexbox, mais vous devez décider de la manière dont vous voulez que les choses se déroulent pour les navigateurs non flexibles. Aligner les choses au centre pourrait être votre meilleur pari.
http://codepen.io/cimmanon/pen / LBDWU P>
ul {
display: -webkit-flexbox;
display: -ms-flexbox;
display: -webkit-flex;
-webkit-flex-wrap: wrap;
-ms-flex-wrap: wrap;
flex-wrap: wrap;
list-style: none;
padding: 0;
text-align: center;
/* text-align: justify;
-moz-text-align-last: justify;
text-align-last: justify;*/
}
@supports (flex-wrap: wrap) {
ul {
display: flex;
}
}
li {
display: inline-block;
-webkit-flex: 1 0;
-ms-flex: 1 0;
flex: 1 0;
min-width: 10em;
background: #CCC;
border: 1px solid;
margin: .5em;
}
Merci pour l'information et les efforts. Votre message est correct et comprend de bons pointeurs, et cela m'a été utile, mais je marquais la réponse de l'utilisateur1846192 comme accepté, car il dispose d'informations et de comparaisons plus détaillées, pour les futurs lecteurs.
Même si User1846192 avait la mauvaise solution et est cassé dans la moitié des navigateurs, ils obtiennent l'acceptation juste parce qu'il a de nombreuses autres informations pour le rendre impressionnant? Comment est-ce utile pour les futurs lecteurs? Votre question n'était pas une question technique sur Flexbox elle-même, elle ne semble guère de choisir la solution brisée sur une fois correcte.
En utilisant CSS, définissez la largeur des balises div en pourcentage.
J'ai déjà essayé cela. Il ne cède pas les résultats escomptés. Le nombre de
div code> éléments d'une ligne est variable et change en fonction de la largeur du conteneur (fenêtre du navigateur).Je ne sais pas si cela fonctionne, mais puisque le bloc en ligne réagit à la hauteur de la ligne, l'espacement des lettres et le texte-alignement: centre, vous pourriez peut-être simplement utiliser texte-alignement: justifier?