Maison >interface Web >tutoriel CSS >Maîtriser les mises en page flexibles : CSS Flexbox VS Grid pour une conception réactive

Maîtriser les mises en page flexibles : CSS Flexbox VS Grid pour une conception réactive

DDD
DDDoriginal
2025-01-22 18:10:11605parcourir

Cet article explore diverses méthodes pour créer une liste de cartes réactive et distribuée horizontalement à l'aide de CSS Flexbox et Grid. Nous relèverons le défi consistant à maintenir une taille et un espacement de carte cohérents sur différentes tailles d'écran.

Table des matières

  • Table des matières
  • Le défi
  • CSS Flexbox : une liste de cartes flexible
  • Distribution uniforme des cartes avec flex-grow et flex-basis
  • Grille CSS : une solution réactive
  • Résumé

Le défi

Les composants d'une galerie ou d'une liste nécessitent souvent des cartes (articles, produits, images) pour s'adapter à la largeur du conteneur. Chaque carte doit être redimensionnée proportionnellement, en conservant une hauteur, une largeur et un espacement égaux. La mise en page doit être redistribuée de manière transparente sur différentes tailles d'écran.

Mastering Flexible Layouts: CSS Flexbox VS Grid for Responsive Design

Une structure HTML de base et un minimum de CSS pourraient initialement produire une distribution inégale des cartes :

Mastering Flexible Layouts: CSS Flexbox VS Grid for Responsive Design

CSS Flexbox : une liste de cartes flexible

Flexbox propose une approche simple. flex-wrap: wrap permet le retour à la ligne vers de nouvelles lignes et gap contrôle l'espacement :

<code class="language-css">.list-items {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}</code>

Cela donne un flux horizontal :

Mastering Flexible Layouts: CSS Flexbox VS Grid for Responsive Design

Cependant, la définition d'une largeur fixe pour .item (width: 100px;) empêche les cartes de s'étendre pour remplir l'espace disponible, laissant des espaces :

Mastering Flexible Layouts: CSS Flexbox VS Grid for Responsive Design

L'utilisation des propriétés justify-content (comme space-between, space-around, etc.) ne résout pas parfaitement le problème de distribution paire :

Mastering Flexible Layouts: CSS Flexbox VS Grid for Responsive Design

Distribution uniforme des cartes avec flex-grow et flex-basis

flex-basis définit la taille initiale de la carte, tandis que flex-grow: 1 (ou flex: 1) permet une croissance proportionnelle :

<code class="language-css">.item {
  /* other styles */
  flex: 1;
  flex-basis: 100px;
}</code>

Cela améliore la distribution, mais la dernière carte peut encore s'étendre de manière inégale :

Mastering Flexible Layouts: CSS Flexbox VS Grid for Responsive Design

Grille CSS : une solution réactive

CSS Grid fournit une solution plus robuste. display: grid et gap sont utilisés de la même manière que Flexbox :

<code class="language-css">.list-items {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}</code>

Pour la réactivité, grid-template-columns avec auto-fit, minmax() et repeat() est la clé :

<code class="language-css">.item {
  /* other styles */
  flex: 1;
  flex-basis: 100px;
}</code>

Cela crée une mise en page entièrement réactive :

Résumé

Flexbox et Grid offrent de puissantes capacités de mise en page. Flexbox excelle dans les mises en page unidimensionnelles, tandis que Grid brille pour le contrôle bidimensionnel. Le choix du bon outil dépend des exigences de conception spécifiques.

Bon codage ! ?

? Découvrez Vue 3 et TypeScript avec mon nouveau livre Learning Vue !

? Connectez-vous avec moi sur X | LinkedIn.

Vous aimez ce post ? Partagez-le! ?? ?

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:WC-garniture-milieuArticle suivant:WC-garniture-milieu