Il y a une partie de la spécification qui semble vraiment ressembler à ceci... juste dans les sections "algorithme de disposition flexible" et "dimension principale" :
Sinon, à partir du premier élément non collecté, collectez des éléments consécutifs un par un jusqu'à la première fois que le prochain élément collecté ne rentrerait plus dans la taille principale intérieure du conteneur flexible, ou jusqu'à ce qu'une rupture forcée soit rencontrée. Si le tout premier élément non collecté ne rentrerait pas, collectez-le juste dans la ligne. Une rupture est forcée là où les propriétés CSS2.1 page-break-before/page-break-after [CSS21] ou CSS3 break-before/break-after [CSS3-BREAK] spécifient une rupture de fragmentation.
De http://www.w3.org/TR/css-flexbox-1/#main-sizing
Cela semble vraiment (à part le fait que les sauts de page devraient être pour l'impression), lors de la mise en page d'une disposition flexible potentiellement multi-ligne (que je tire d'une autre partie de la spécification est une sans flex-wrap: nowrap
), un page-break-after: always
ou break-after: always
devrait provoquer une rupture, ou passer à la ligne suivante.
.flex-container {
display: flex;
flex-flow: row wrap;
}
.child {
flex-grow: 1;
}
.child.break-here {
page-break-after: always;
break-after: always;
}
Cependant, j'ai essayé cela et cela n'a pas été implémenté de cette manière dans...
- Safari (jusqu'à 7)
- Chrome (jusqu'à 43 dev)
- Opera (jusqu'à 28 dev & 12.16)
- IE (jusqu'à 11)
Cela fonctionne comme prévu (pour moi, du moins) dans :
Exemple sur http://codepen.io/morewry/pen/JoVmVj.
Je n'ai trouvé aucune autre demande dans le suivi des bogues, donc je l'ai signalé sur https://code.google.com/p/chromium/issues/detail?id=473481.
Mais le sujet en est venu à la liste de diffusion et, peu importe comment cela semble, ce n'est apparemment pas ce qu'ils voulaient impliquer, sauf peut-être pour la pagination. Ainsi, il n'y a pas de moyen de passer avant ou après une boîte particulière dans une disposition flexible sans imbriquer des dispositions flexibles successives à l'intérieur des enfants flexibles ou jouer avec des largeurs spécifiques (par exemple, flex-basis: 100%
).
C'est extrêmement frustrant, bien sûr, car travailler avec l'implémentation de Firefox confirme ma suspicion que la fonctionnalité est incroyablement utile. Outre l'alignement vertical amélioré, le manque annule une grande partie de l'utilité de la disposition flexible dans de nombreux scénarios. Devoir ajouter des balises d'enveloppement supplémentaires avec des dispositions flexibles imbriquées pour contrôler le point où une ligne se termine augmente la complexité à la fois de l'HTML et du CSS et, malheureusement, rend souvent order
inutile. De même, forcer la largeur d'un élément à 100%
réduit le potentiel "responsive" de la disposition flexible ou nécessite beaucoup de requêtes spécifiques ou de sélecteurs de compte (par exemple, les techniques qui peuvent accomplir le résultat général dont vous avez besoin mentionnées dans les autres réponses).
Au moins, les flottants avaient clear
. Quelque chose pourrait être ajouté à un moment donné pour cela, espérons-le.