Header Full-Bleed

L'Approche Flexbox : La Solution au Niveau du Composant

Bien que CSS Flexbox soit conçu pour la mise en page unidimensionnelle, il peut être utilisé pour créer des effets full-bleed, en particulier pour des éléments enfants au sein d'un composant.

Concept

Une technique consiste à inverser la logique de contrainte. Au lieu de contraindre le conteneur parent, on le laisse s'étendre sur toute la largeur. Ensuite, on applique une max-width à tous les enfants directs, sauf à ceux qui doivent être en full-bleed. Ces derniers sont autorisés à occuper 100% de la largeur du parent non contraint.

Implémentation

/* Le parent n'a pas de contrainte de largeur */
article {
    display: flex;
    flex-direction: column;
    align-items: center;
    }
    /* Contraindre tous les enfants par défaut */
article > *:not(.full-bleed) {
    max-width: 65ch;
    width: 100%;
    /* S'assurer qu'ils remplissent la largeur 
    jusqu'au max-width */
    }
    /* Permettre à l'élément full-bleed de s'étendre */
.full-bleed {
    width: 100%;
    max-width: 100%; /* Surcharge la contrainte par défaut */
    }

Analyse

Cette méthode est sémantiquement propre et évite les calculs complexes. Elle est excellente pour les situations où le contenu est généré par un CMS et où il faut appliquer sélectivement le style full-bleed à certains éléments comme les images ou les vidéos. Elle nécessite cependant une philosophie de stylage parent/enfant différente de l'approche Grid, car la logique de contrainte est déléguée aux enfants plutôt qu'au parent.