Par exemple, j'ai une classe .article, et je veux voir cette classe sous forme de grille. J'ai donc appliqué ce style:
.article{
width:100px;
height:100px;
background:#333;
float:left;
margin:5px;
}
Ce style donnera au .article un aspect carrelé / quadrillé. Cela fonctionne bien avec une hauteur fixe. Mais si je veux régler la hauteur sur auto (étirement automatique en fonction des données qu'elle contient), la grille a l'air désagréable.
Et je veux faire la vue comme ceci:
Vous pouvez utiliser flexbox.
Placez vos éléments dans un conteneur flexible à colonnes multilignes
Réorganisez les éléments, de sorte que l'ordre DOM soit respecté horizontalement au lieu de verticalement. Par exemple, si vous voulez 3 colonnes,
Forcer un saut de colonne avant le premier élément de chaque colonne:
Malheureusement, tous les navigateurs ne prennent pas encore en charge les sauts de ligne dans flexbox. Cela fonctionne sur Firefox, cependant.
Afficher l'extrait de code
la source
Maintenant que CSS3 est largement disponible et compatible via les principaux navigateurs, il est temps pour une solution pure équipée de l'outil d'extrait de code de SO:
Pour créer une mise en page de maçonnerie à l' aide de CSS3
column-count
,column-gap
il suffirait de. Mais j'ai aussi l'habitudemedia-queries
de le rendre réactif.Avant de plonger dans l'implémentation, veuillez considérer qu'il serait beaucoup plus sûr d'ajouter une bibliothèque de secours jQuery Masonry pour rendre votre code compatible avec le navigateur hérité, en particulier IE8-:
Et c'est parti:
la source
masonry bricks
. La colonne ordonne les choses de haut en bas, la question demandait que l'ordre reste le même horizontalement, pas de basculer verticalement. Par exemple, le bloc le plus court trouvé ci-dessus DEVRAIT être dans la troisième colonne mais la ligne du haut.La meilleure option pour résoudre ce problème avec uniquement css consiste à utiliser la propriété css column-count.
Vérifiez ceci pour plus d'informations: https://developer.mozilla.org/en/docs/Web/CSS/column-count
la source
par exemple:
Il s'agit d'une grille avec 7 colonnes et vos lignes ont une taille automatique.
Pour plus de détails, accédez au lien suivant: https://css-tricks.com/snippets/css/complete-guide-grid/
la source
Avec le module CSS Grid, vous pouvez créer une mise en page assez similaire .
Démo CodePen
1) Définissez trois colonnes de grille de largeur fixe
2) Assurez-vous que les articles de grande hauteur couvrent 2 rangées
Afficher l'extrait de code
Démo Codepen
Les problèmes:
la source
et si vous voulez aller encore plus loin que la maçonnerie, utilisez l'isotope http://isotope.metafizzy.co/ c'est la version avancée de la maçonnerie (développée par le même auteur) ce n'est pas du CSS pur, il utilise l'aide de Javascript mais il est très populaire, vous trouverez donc de nombreux documents
si vous trouvez cela très compliqué, il existe de nombreux plugins premium qui ont déjà basé leur développement sur des isotopes, par exemple les Media Boxes http://codecanyon.net/item/media-boxes-responsive-jquery-grid/5683020
la source
Il existe un exemple basé sur la grille .
basé sur ce code-stylo de Rachel Andrew FTW
la source