• Votre panier est vide.

Les concepts de base pour flexbox

(Dernière mise à jour: 5 février 2023)

Le module des boîtes flexibles, aussi appelé « flexbox », a été conçu comme un modèle de disposition unidimensionnel et comme une méthode permettant de distribuer l’espace entre des objets d’une interface ainsi que de les aligner.

Dans cet article, nous verrons les fonctionnalités principales des flexbox que nous approfondirons ensuite dans d’autres sujets.

Lorsqu’on décrit les boîtes flexibles comme une méthode de disposition unidimensionnelle, on indique en fait que les flexbox gèrent une seule dimension à la fois : une ligne ou une colonne. Ce modèle est à comparer au modèle bidimensionnel de la disposition en grille (CSS Grid) qui contrôle à la fois les colonnes et les lignes.

Partons du fait qu’il y a plusieurs façons de mettre en page un site. Au fil du temps, plusieurs techniques ont existé :

  1. Au début, les webmasters utilisaient des tableaux HTML pour faire la mise en page (berk)
  2. Puis, CSS est apparu et on a commencé à faire une mise en page à l’aide de la propriété float (bof)
  3. Cette technique avait des inconvénients. Une autre, plus pratique, a consisté à créer des éléments de typeinline-block  sur la page (mouais)
  4. Aujourd’hui, une bien meilleure technique encore existe : Flexbox ! Elle permet toutes les folies (ou presque) et c’est celle que je vous recommande d’utiliser si vous en avez la possibilité, lorsque vous créez un nouveau site. Flexbox est désormais reconnu par tous les navigateurs récents !

Le principe

Le principe de la mise en page avec Flexbox est simple : vous définissez un conteneur, et à l’intérieur vous placez plusieurs éléments. Imaginez un carton dans lequel vous rangez plusieurs objets : c’est le principe !

Sur une même page web, vous pouvez sans problème avoir plusieurs conteneurs (plusieurs cartons si vous préférez). Ce sera à vous d’en créer autant que nécessaire pour obtenir la mise en page que vous voulez.

Commençons par étudier le fonctionnement d’un conteneur (div).

Flexbox : conteneur

Le conteneur est une balise HTML, et les éléments sont d’autres balises HTML à l’intérieur :

<div id="conteneur">
   <div class="element 1">Element </div>
   <div class="element 2">Element </div>
   <div class="element 3">Element </div>
</div>

Display Flex

La propriété CSS display: flex est un raccourci pour définir la propriété display sur flex et appliquer une disposition de boîte flexible à un élément. Cela permet à l’élément d’être traité comme un conteneur flexible, en disposant ses éléments enfants de manière flexible et dynamique, permettant une répartition égale de l’espace le long de l’axe principal et un contrôle sur la direction du flux. La mise en page Flexbox est largement utilisée pour créer des conceptions réactives et flexibles.

Flexbox

Voici un exemple pratique d’utilisation de display: flex pour créer un en-tête de site Web :

HTML :

<header class="header">
  <nav class="navigation">
    <ul>
      <li><a href="#">Accueil</a></li>
      <li><a href="#">À Propos</a></li>
      <li><a href="#">Contact</a></li>
    </ul>
  </nav>
  <h1 class="logo">Mon Site Web</h1>
</header>

CSS :

.header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 20px;
  background-color: #333;
  color: #fff;
}

.navigation {
  display: flex;
}

.logo {
  font-size: 24px;
  font-weight: bold;
  margin: 0;
}

Cet exemple utilise display: flex pour créer un en-tête avec une barre de navigation à gauche et un logo à droite. La propriété justify-content: space-between assure que l’espace disponible sur l’axe principal est réparti entre la barre de navigation et le logo, tandis que la propriété align-items: center aligne les éléments sur l’axe secondaire au centre.

La direction

Dans Flexbox, la direction du flux est déterminée par « l’axe principal » et « l’axe transversal ». L’axe principal est défini par la propriété flex-direction et peut être défini sur row (default), row-reverse, column, ou column-reverse. L’axe transversal est perpendiculaire à l’axe principal et détermine la disposition des éléments le long de l’axe opposé.

Par exemple, si la propriété flex-direction est définie sur row , l’axe principal s’étend horizontalement de gauche à droite et l’axe transversal s’étend verticalement de haut en bas. La direction de l’axe principal peut être inversée en définissant flex-direction sur row-reverse ou column-reverse.

Le retour à la ligne

Dans Flexbox, la façon dont les éléments s’enroulent sur plusieurs lignes est déterminée par la propriété flex-wrap. Cette propriété peut être définie sur nowrap (par défaut), wrap ou wrap-reverse.

  • nowrap: tous les éléments seront placés sur une seule ligne, quelle que soit leur taille.
  • wrap: les éléments s’enrouleront sur plusieurs lignes s’il n’y a pas assez d’espace dans l’axe principal pour les afficher.
  • wrap-reverse: les éléments s’enrouleront sur plusieurs lignes, mais l’ordre sera inversé à partir de l’option wrap.

Le comportement d’habillage est contrôlé par la taille de l’axe principal et les valeurs flex-basis et min-width/min-height des éléments, ainsi que la largeur et la hauteur du conteneur flexible.

Changer l’alignement

Pour changer l’alignement d’un élément flexbox, vous pouvez utiliser la propriété CSS align-items. Cette propriété définit comment les éléments enfants sont alignés selon l’axe secondaire (l’axe transversal à l’axe principal, qui dépend de la direction de l’élément flex container). Les valeurs courantes pour align-items incluent flex-start, flex-end, center, baseline et stretch.

Voici un exemple de comment changer l’alignement en utilisant CSS :

.container {
   display: flex;
   align-items: flex-end; /* Aligne les éléments enfants à la fin de l'axe secondaire */
}

Aligner sur l’axe secondaire

Pour aligner les éléments enfants d’un élément flexbox sur l’axe secondaire (transversal à l’axe principal), vous pouvez utiliser la propriété CSS align-items. Cette propriété définit comment les éléments enfants sont alignés selon l’axe secondaire. Les valeurs courantes pour align-items incluent flex-start, flex-end, center, baseline et stretch.

Voici un exemple de comment aligner les éléments enfants sur l’axe secondaire en utilisant CSS :

.container {
  display: flex;
  align-items: center; /* Aligne les éléments enfants au centre de l'axe secondaire */
}

align-content

La propriété CSS align-content est utilisée pour aligner les lignes d’un élément flex container le long de l’axe secondaire (transversal à l’axe principal), lorsque l’espace disponible sur l’axe principal est insuffisant pour accueillir tous les éléments enfants sur une seule ligne. Cela signifie que align-content s’applique uniquement lorsque les éléments enfants sont répartis sur plusieurs lignes.

Les valeurs courantes pour align-content incluent flex-start, flex-end, center, space-between, space-around, et stretch.

Voici un exemple de comment utiliser align-content pour aligner les lignes d’un élément flex container :

.container {
  display: flex;
  flex-wrap: wrap;
  align-content: space-between; /* Aligne les lignes d'éléments enfants en les espacant également sur l'axe secondaire */
}

L’ordre

La propriété CSS order peut être utilisée pour changer l’ordre d’affichage des éléments enfants d’un élément flex container. La valeur par défaut pour order est 0, ce qui signifie que les éléments enfants seront affichés dans l’ordre dans lequel ils sont déclarés dans le code HTML. Si vous souhaitez changer l’ordre d’affichage d’un élément enfant spécifique, vous pouvez donner à cet élément une valeur différente pour order. Les éléments avec une valeur plus élevée pour order seront affichés après les éléments avec une valeur plus faible pour order.

Voici un exemple de comment utiliser order pour changer l’ordre d’affichage des éléments enfants d’un élément flex container :

.item1 {
  order: 2; /* Sera affiché en deuxième position */
}

.item2 {
  order: 1; /* Sera affiché en première position */
}

.container {
  display: flex;
}

Faire grossir ou maigrir les éléments

Vous pouvez faire grossir ou maigrir les éléments d’un élément flex container en utilisant la propriété CSS flex-grow. Cette propriété définit le facteur d’agrandissement pour chaque élément enfant, ce qui signifie que plus la valeur de flex-grow est élevée, plus l’élément enfant sera grand. Par défaut, la valeur de flex-grow est 0, ce qui signifie que les éléments enfants ne grandissent pas.

Voici un exemple de comment utiliser flex-grow pour faire grandir un élément enfant spécifique :

.item1 {
  flex-grow: 1; /* Grandira pour remplir l'espace disponible */
}

.container {
  display: flex;
}

Pour maigrir un élément, vous pouvez donner une valeur plus faible pour flex-grow. Par exemple :

.item2 {
  flex-grow: 0; /* Ne grandira pas */
}

.container {
  display: flex;
}
Banner Sudoku Quest

Formations de Develop4fun

0 réponses sur "Les concepts de base pour flexbox"

Laisser un message

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

© Develop4fun. Tous les droits réservés.