Générateur CSS Flexbox, gratuit

Construisez des mises en page Flexbox visuellement · ajustez les propriétés du conteneur et des éléments, voyez un aperçu en direct, copiez le CSS.

Propriétés du conteneur

Aperçu en direct

CSS généré

Comment utiliser

  1. Définissez les propriétés du conteneur : configurez le conteneur flex, flex-direction, justify-content, align-items, flex-wrap et gap.
  2. Ajoutez et configurez les éléments flex : ajoutez des éléments enfants et définissez flex-grow, flex-shrink, flex-basis, align-self et order individuellement.
  3. Copiez le CSS : récupérez le CSS complet pour le conteneur et les éléments, prêt à utiliser dans votre projet.

Pourquoi utiliser le générateur Flexbox ?

Flexbox est l'outil essentiel pour une mise en page CSS monodimensionnelle, aligner des éléments en ligne ou en colonne avec des contrôles de répartition et d'alignement puissants. Mais les propriétés sont nombreuses et leurs interactions complexes : justify-content contre align-items, flex-grow contre flex-basis, axe principal contre axe transverse. Ce générateur interactif fournit un retour visuel instantané lorsque vous modifiez chaque propriété, ce qui en fait le moyen le plus rapide d'apprendre Flexbox et d'obtenir le CSS adapté à votre mise en page.

Fonctionnalités

Questions fréquentes

Quelle est la différence entre justify-content et align-items ?

justify-content distribue les éléments le long de l'axe principal (horizontal par défaut). align-items aligne les éléments le long de l'axe transverse (vertical par défaut). Quand flex-direction vaut column, les axes s'inversent, justify-content devient vertical et align-items devient horizontal.

Quand utiliser Flexbox ou CSS Grid ?

Utilisez Flexbox pour des mises en page monodimensionnelles, une rangée de boutons, une barre de navigation, une liste de cartes qui doivent passer à la ligne. Utilisez CSS Grid pour des mises en page bidimensionnelles où vous devez contrôler rangées et colonnes simultanément, comme une mise en page complète ou une grille de cartes complexe.

Que signifie flex: 1 ?

flex: 1 est un raccourci pour flex-grow: 1; flex-shrink: 1; flex-basis: 0%. Cela indique à l'élément de grandir pour remplir l'espace disponible, de rétrécir si besoin, et de partir de zéro avant de répartir l'espace. Tous les éléments avec flex: 1 se partagent l'espace équitablement.

Ce que Flexbox fait vraiment

Flexbox (Flexible Box Layout) est un modèle de mise en page CSS conçu pour distribuer l’espace et aligner les éléments dans une direction à une dimension : soit une ligne, soit une colonne. Il introduit deux concepts fondamentaux qui déterminent comment tout se comporte : l’axe principal (la direction primaire dans laquelle les éléments s’écoulent, horizontale par défaut) et l’axe transversal (perpendiculaire à l’axe principal, vertical par défaut). Une fois que vous avez intériorisé principal vs transversal, chaque propriété Flexbox correspond à l’un d’entre eux : justify-content fonctionne sur l’axe principal, align-items fonctionne sur l’axe transversal, flex-direction échange quel axe est lequel.

Flexbox a résolu un ensemble de problèmes de mise en page qui ont tourmenté les développeurs web de 1998 à 2014. Avant Flexbox, centrer un élément verticalement nécessitait des hacks (display: table-cell, marges négatives, position: absolute avec des transformations translate). Les colonnes de hauteur égale nécessitaient la technique des « fausses colonnes » avec des images d’arrière-plan. Les pieds de page collants nécessitaient des calculs précis en pixels. Flexbox a rendu tout cela trivial : une déclaration d’une ligne remplace des décennies de contournements CSS. Le compromis est que Flexbox est à une dimension ; pour les mises en page à deux dimensions (ligne ET colonne simultanément), CSS Grid (livré en 2017) est le meilleur outil.

Les propriétés Flexbox se divisent proprement en deux groupes : propriétés du conteneur (appliquées au parent : display: flex, flex-direction, flex-wrap, justify-content, align-items, align-content, gap) et propriétés des éléments (appliquées aux enfants : flex-grow, flex-shrink, flex-basis, align-self, order). Les propriétés du conteneur contrôlent les motifs de mise en page ; les propriétés des éléments contrôlent les exceptions individuelles. Ce générateur fait apparaître les deux ensembles afin que vous puissiez expérimenter comment ils interagissent sans écrire de code.

Comment cet outil fonctionne en coulisses

L’aperçu en direct est un conteneur flex avec des éléments enfants d’exemple. Lorsque vous modifiez les propriétés du conteneur (flex-direction, justify-content, etc.) via des listes déroulantes et des entrées, JavaScript met à jour le style inline du conteneur d’aperçu, et le navigateur re-rend la mise en page. L’aperçu est l’implémentation Flexbox réelle du navigateur, pas une simulation JavaScript : vous voyez exactement ce que votre CSS produira sur une vraie page.

Les contrôles par élément vous permettent d’ajuster chaque enfant individuellement. Vous pouvez ajouter ou supprimer des éléments, définir leurs valeurs flex-grow, flex-shrink, flex-basis, align-self et order, et voir comment le conteneur redistribue l’espace en conséquence. Les indicateurs d’axe visuels montrent les axes principal et transversal pour la configuration actuelle, renforçant le modèle mental. Les propriétés sont du vrai CSS que vous pouvez copier directement dans votre feuille de style, pas de transpilation ou de préfixes de framework nécessaires.

Le panneau CSS généré se met à jour à chaque interaction, produisant deux règles CSS : une pour le conteneur (avec les propriétés flex choisies) et une pour les éléments. Cliquez sur Copier CSS et les règles sont écrites dans votre presse-papiers. L’outil lui-même ne fait jamais de requêtes réseau ; le rendu d’aperçu, la génération de code et l’écriture au presse-papiers se produisent tous en JavaScript sur votre appareil. Rafraîchissez la page et votre configuration est partie sauf si vous avez copié le CSS d’abord.

Brève histoire de Flexbox

Flux du monde réel

Pièges courants et ce qu’ils signifient

Confidentialité : tout s’exécute dans votre navigateur

Les outils d’apprentissage et de mise en page CSS viennent en deux saveurs : pages HTML simples exécutant du JavaScript côté client (privées, rapides, pas de setup) et éditeurs cloud avec projets sauvegardés (collaboratifs mais avec compromis de confidentialité). Cet outil est du premier type. Vos sélections de propriété, vos configurations d’éléments, votre CSS généré : tout reste dans votre session navigateur. Rafraîchissez la page et l’état est parti sauf si vous avez copié le CSS d’abord.

Les enjeux de confidentialité sont faibles ici parce que les configurations Flexbox contiennent rarement des informations sensibles. Néanmoins, l’absence d’analytique compte : vous pouvez expérimenter librement sans que votre processus d’essai-erreur soit enregistré. Particulièrement utile dans des contextes de classe ou de formation d’entreprise où faire enregistrer les étudiants ou stagiaires sur des plateformes tierces est un point de friction. L’outil est une page statique unique sans backend, utilisable dans n’importe quel navigateur, y compris les machines d’entreprise verrouillées.

Quand un autre outil est le bon choix

Autres questions fréquentes

Que signifie exactement le raccourci flex ?

Le raccourci flex définit trois propriétés à la fois : flex: <grow> <shrink> <basis>. Valeurs courantes : flex: 1 (1, 1, 0%) pour les éléments de distribution égale, flex: 0 0 auto pour les éléments de taille fixe, flex: 1 1 250px pour les éléments qui grandissent/rétrécissent à partir d’un point de départ de 250px. Le raccourci a des valeurs initiales spéciales quand seulement une ou deux valeurs sont fournies ; la forme explicite à trois valeurs évite les surprises.

Comment faire passer les éléments à plusieurs lignes ?

Définissez flex-wrap: wrap sur le conteneur. Les éléments débordent vers une nouvelle ligne lorsqu’ils ne tiennent pas. Combinez avec flex-basis sur les éléments pour contrôler combien tiennent par ligne : flex: 1 1 200px crée une grille responsive où les éléments font au moins 200px, grandissent pour remplir l’espace restant et passent à de nouvelles lignes sur les écrans étroits. La propriété gap du conteneur gère l’espacement entre les lignes et les éléments enveloppés.

Puis-je inverser l’ordre des éléments flex ?

Oui, plusieurs façons. Au niveau du conteneur : flex-direction: row-reverse (ou column-reverse) inverse tous les éléments en ordre. Au niveau de l’élément : la propriété order attribue des poids numériques ; les éléments avec des nombres plus bas apparaissent en premier. L’ordre par défaut est 0 ; définir order: -1 sur un élément le déplace au début. Note d’accessibilité : la réorganisation visuelle n’affecte pas l’ordre de tabulation ou l’ordre de lecture du lecteur d’écran, ce qui peut dérouter les utilisateurs de clavier et de technologies d’assistance. Utilisez avec parcimonie.

Quelle est la différence entre align-items et align-content ?

align-items aligne les éléments dans leur ligne (ou colonne) le long de l’axe transversal. align-content aligne les lignes (ou colonnes) elles-mêmes dans le conteneur, ne sont significatives que lorsqu’il y a plusieurs lignes enveloppées. Si flex-wrap est défini sur nowrap (par défaut), align-content n’a aucun effet car il n’y a qu’une seule ligne. Utilisez align-items pour l’alignement à une seule ligne, align-content pour l’alignement multi-ligne.

Comment centrer un seul élément avec Flexbox ?

La réponse classique : display: flex; justify-content: center; align-items: center; sur le conteneur parent. Cela centre l’enfant à la fois horizontalement et verticalement. Pour juste horizontal : utilisez seulement justify-content: center. Pour juste vertical : utilisez seulement align-items: center. Si vous devez centrer dans un parent de hauteur inconnue, ajoutez min-height: 100vh au parent afin qu’il ait un espace vertical pour centrer. Tout le motif remplace 20 ans de contournements de centrage CSS.

Pourquoi ma troncature de texte ne fonctionne-t-elle pas dans un conteneur flex ?

À cause du défaut min-width: auto sur les éléments flex. Text-overflow: ellipsis nécessite que l’élément déborde réellement de son conteneur ; avec la largeur minimale par défaut définie à la taille intrinsèque du contenu, l’élément ne déborde jamais. Solution : ajoutez min-width: 0 à l’élément flex contenant le texte à tronquer. C’est le bug Flexbox le plus courant des réponses Stack Overflow : rechercher « flex text-overflow ellipsis not working » renvoie des milliers de versions de cette réponse exacte.

Outils associés