Sensible galerie d'image à l'aide de CSS flexbox ou une grille de mise en page

Je suis en train de travailler sur une Image-Galerie-Widget où l'utilisateur peut définir une miniature de la largeur, de la hauteur de la vignette et de la marge (entre les vignettes) et le widget va présenter l'ensemble de l'image-thumnails dans une belle grille où chaque image a la même largeur et la hauteur.

, Je me demande si css-flexbox ou css-grille rend cela possible sans la nécessité de définir les lignes et les colonnes dans le code et sans la nécessité pour les points d'arrêt/media-queries.

Forme de vignettes les Images sont enveloppés dans un point d'ancrage, de sorte qu'un élément de la galerie (ou grille-élément) ressemblera à quelque chose comme ceci:

<a href="#" class="gallery-item">
    <img src="myimage" width="300" height="200" />
</a>

Les éléments de la galerie doit remplir complètement le div conteneur, ce qui signifie qu'il ne devrait pas y avoir un écart entre la dernière vignette dans une rangée et le div conteneur du bord droit (sauf si nous n'avons pas assez d'éléments pour remplir la ligne c'est à dire lorsque les 3 éléments de pi en une ligne, mais nous n'avons que 8 éléments, puis la 3ème ligne de seulement 2 articles et d'un écart à droite qui est aussi large qu'un élément).

Éléments de la galerie ne peut jamais être plus large que la forme de vignettes de largeur à l'utilisateur de définir, parce que nous ne voulons pas dégrader la qualité de l'image. Supposons 300px de largeur pour cet exemple. La marge entre les éléments de la galerie est fixe et réglé par l'utilisateur. Si il n'y a pas assez d'éléments à gauche pour remplir une ligne, il suffit de gauche aligner, c'est à dire comme ceci:

Sensible galerie d'image à l'aide de CSS flexbox ou une grille de mise en page

Je ne veux pas de définir des points d'arrêt dans le CSS ni ajouter de code html pour la ligne/colonne constructions. Je veux le navigateur il suffit de placer autant d'éléments de la galerie côté par côté, comme s'insérer dans le conteneur. Si il y a un écart sur la droite (c'est à dire 3 vignettes * 300px de largeur = 900px, mais conteneur est 1000px de large), le navigateur devrait échelle en bas de la grille, de sorte qu'un élément de la galerie va s'adapter et ainsi éliminer l'écart. J'ai besoin d'être en mesure de définir une marge autour de chaque élément de la galerie.

Vous pouvez voir l'souhaité comportements réactifs (lors de la modification de la largeur du navigateur) dans ce gif:

Sensible galerie d'image à l'aide de CSS flexbox ou une grille de mise en page

Ce que vous voyez dans le gif est fait sans flexbox, mais a besoin d'une tonne de CSS qui j'ai été en espérant éviter avec flexbox. J'ai fait des recherches flexbox assez peu, mais je n'ai pas été en mesure d'obtenir ma tête autour d'elle complètement pour l'instant.

Merci pour les conseils!

Est js autorisé ici?
Non, je suis à la recherche d'un CSS seule solution.
Merci de poster le code que vous avez essayé.
n'avez pas essayé le code mais, depuis que je suis à l'aise dans le CSS mais ne savez pas une chose à propos de flex ou une grille de mise en page pour l'instant et avait le sentiment qu'elles offriraient le plus simple CSS seule solution.

OriginalL'auteur zıəs uɐɟəʇs | 2017-02-21