Full-Bleed en CSS

Techniques pour créer des layouts qui s'étendent bord à bord

Qu'est-ce que le Full-Bleed ?

Le full-bleed (bord à bord) est une technique CSS qui permet à certains éléments de s'étendre sur toute la largeur de la viewport, même si le contenu principal est limité à une largeur maximale. C'est utile pour les sections d'appel à l'action, les sections colorées, ou les conteneurs qui doivent vraiment occuper toute la largeur.

Cette page présente 5 techniques différentes pour réaliser du full-bleed, sans utiliser de classes CSS. Tous les exemples sont purement basés sur les sélecteurs d'éléments et les attributs data.

Exemple 01

CSS Grid (3 colonnes)

Description

La technique la plus moderne et recommandée. Utilise une grille CSS avec 3 colonnes : marges élastiques + colonne centrale fixe.

Technique CSS

body { display: grid; grid-template-columns: 1fr min(1000px, 100% - 2rem) 1fr; } section { grid-column: 2; } section[data-full-bleed] { grid-column: 1 / -1; }

Comment ça marche

  • Colonne 1 : marge élastique gauche (1fr)
  • Colonne 2 : contenu centré (min() pour responsive)
  • Colonne 3 : marge élastique droite (1fr)
  • Les sections normales vont en colonne 2
  • Les sections full-bleed s'étendent sur toutes les colonnes
✓ Avantages : Élégante, maintenable, responsive native, pas de débordement
✗ Inconvénients : Nécessite IE 11+
Voir l'exemple
Exemple 02

Flexbox + display: contents

Description

Combine flexbox au niveau du body avec display: contents sur le main pour un contrôle flexible du flux vertical.

Technique CSS

body { display: flex; flex-direction: column; } main { display: contents; } section { width: 100%; max-width: 1000px; align-self: center; } section[data-full-bleed] { width: 100%; max-width: none; align-self: auto; }

Comment ça marche

  • Body gère le flux flexbox vertical
  • display: contents rend main transparent
  • Sections normales : largeur max avec align-self: center
  • Sections full-bleed : 100% de largeur
✓ Avantages : Flexible, responsive, bon contrôle du flux
✗ Inconvénients : Nécessite modern browsers
Voir l'exemple
Exemple 03

100vw + margin-left

Description

Technique utilisant 100vw (largeur viewport) avec un calcul pour recentrer correctement. Simple mais avec quelques pièges.

Technique CSS

main { max-width: 1000px; margin: 0 auto; padding: 0 1rem; } section[data-full-bleed] { width: 100vw; margin-left: calc(-50vw + 50%); padding: 3rem 1rem; }

Comment ça marche

  • 100vw s'étend sur toute la viewport
  • calc(-50vw + 50%) recentre l'élément
  • Fonctionne avec n'importe quel conteneur parent
  • Attention à la scrollbar verticale !
✓ Avantages : Simple à comprendre, pas besoin de grille
✗ Inconvénients : 100vw inclut la scrollbar, calcul un peu confus
Voir l'exemple
Exemple 04

100vw pur

Description

Approche directe utilisant simplement 100vw avec le calcul de centrage. Très lisible et direct.

Technique CSS

[data-full-bleed] { width: 100vw; margin-left: calc(-50vw + 50%); padding: 3rem 1rem; } [data-full-bleed] h2 { max-width: 1000px; margin: 0 auto; }

Comment ça marche

  • Application directe de 100vw
  • Calcul pour réaligner l'élément
  • Contenu interne centré avec max-width
  • Approche très directe et compréhensible
✓ Avantages : Très simple, très lisible, peu de code
✗ Inconvénients : Problème scrollbar, fonctionne mieux sans scroll horizontal
Voir l'exemple
Exemple 05

CSS Grid avancé avec min()

Description

Variante optimisée de la grille avec min() pour une meilleure gestion du responsive sur petits écrans.

Technique CSS

main { display: grid; grid-template-columns: 1fr min(900px, 100% - 2rem) 1fr; } section > * { grid-column: 2; } section[data-full-bleed] { grid-column: 1 / -1; }

Comment ça marche

  • Grille 3 colonnes comme l'exemple 01
  • min() pour responsive optimal
  • Gère mieux les petits écrans
  • Élégante et très flexible
✓ Avantages : Très responsive, élégante, maintenable
✗ Inconvénients : Complexité légèrement supérieure
Voir l'exemple
Exemple 06

Padding Dynamique avec max()

Description

Approche élégante et minimaliste utilisant padding dynamique avec la fonction CSS max() pour un full-bleed très responsive et simple.

Technique CSS

body > header, body > footer, main > section { padding-block: 1.5rem; padding-inline: max(1rem, calc((100% - 1100px) / 2)); } [data-full-bleed] { background: gradient...; color: white; }

Comment ça marche

  • Utilise max() pour padding responsive
  • 1rem minimal sur petits écrans
  • Distribution égale des marges sur grands écrans
  • Structure HTML très simple et sémantique
  • Les sections full-bleed héritent naturellement
✓ Avantages : Très simple, minimaliste, super responsive, HTML clean
✗ Inconvénients : Nécessite modern browsers
Voir l'exemple

Tableau comparatif

Technique Support navigateur Complexité Responsive
CSS Grid IE 11+ Moyenne Excellente
Flexbox + contents Modern browsers Moyenne Excellente
100vw + margin Modern browsers Simple Bonne
100vw pur Modern browsers Très simple Bonne
CSS Grid avancé IE 11+ Moyenne Excellente
Padding Dynamique Modern browsers Très simple Excellente

Recommandations

Pour les nouveaux projets : Utilisez la technique CSS Grid (exemple 01 ou 05). C'est la plus moderne, la plus flexible et la plus facile à maintenir.

Pour la compatibilité maximale : Utilisez la technique 100vw (exemple 04) ou une version simple de margin négative.

Pour plus de contrôle vertical : Utilisez Flexbox + display: contents (exemple 02) qui offre plus de flexibilité pour le flux du contenu.