Exemple de grille qui s'adapte à son contenu avec display: inline-grid et repeat(auto-fit, …)
Inspiré de ce CodePen. Note : on peut remplacer display: inline-grid par display: inline grid (en deux mots)
Regarder cette page sous différentes largeurs de fenêtre pour en voir l'intérêt. L'important, outre l'utilisation de inline-grid et repeat(auto-fit, …), c'est la min-width. En fait, cette min-width va donner la largeur de la grille, d'où ce calcul de 100vw - une largeur de "case" (largeur d'une image + le gap de la grille). Pour le fun, désactiver la min-width dans les outils de développement.
J'ai essayé de faire pareil avec inline-flex et flex-wrap: wrap, sans succès. C'est logique, le module CSS Grid est le plus adapté pour faire des grilles par définition.