Ressources pour développeur web

Théme de la semaine : Git

Block et inline en CSS : le guide complet pour débutant

Temps de lecture estimé : 15 minutes
Accueil CSS3 Block et inline en CSS : le guide complet pour débutant

Quand on débute en CSS, on tombe très vite sur un problème frustrant : certains éléments prennent toute la largeur de la page, d’autres restent collés dans le texte, et parfois les marges ou les dimensions semblent complètement ignorées. La raison est souvent la même : vous ne maîtrisez pas encore la différence entre les éléments block et inline en CSS.

Dans ce tutoriel complet pour débutant, vous allez comprendre simplement comment fonctionne l’affichage des éléments HTML en CSS, pourquoi certaines balises passent automatiquement à la ligne et comment utiliser la propriété display pour contrôler votre mise en page. Avec des exemples concrets et des explications accessibles, vous pourrez enfin créer des interfaces plus propres, plus logiques et beaucoup moins frustrantes à mettre en forme.

  • Pourquoi certains éléments HTML passent à la ligne automatiquement alors que d’autres restent collés dans le texte, même sans CSS complexe.
  • Éviter les erreurs les plus fréquentes avec widthheight, les marges et la propriété display, qui bloquent souvent les débutants pendant des heures.
  • Apprendre à transformer facilement des liens, boutons ou blocs de contenu pour créer des mises en page plus propres, modernes et faciles à contrôler.

Quand vous commencez à apprendre le HTML et le CSS, vous remarquez assez vite quelque chose d’un peu étrange : certaines balises se placent automatiquement les unes sous les autres, tandis que d’autres restent tranquillement sur la même ligne.

Par exemple, un paragraphe passe à la ligne tout seul. Un lien, lui, reste au milieu du texte comme si de rien n’était. Ce comportement n’est pas magique. Il vient principalement d’une notion fondamentale en CSS : les éléments block et inline.

Élément block et inline en CSS

Comprendre la différence entre un élément block et un élément inline, c’est un peu comme apprendre les règles de circulation avant de conduire. Vous pouvez avancer sans les connaître, mais vous risquez rapidement de vous retrouver avec une mise en page qui part en freestyle complet.

Dans ce tutoriel, vous allez apprendre :

  • ce qu’est un élément block en CSS
  • ce qu’est un élément inline
  • comment les reconnaître
  • comment modifier leur comportement
  • pourquoi certaines propriétés CSS ne fonctionnent pas toujours

L’objectif est simple : à la fin de ce tutoriel CSS, vous saurez pourquoi vos éléments HTML se comportent comme ils le font, et surtout comment reprendre le contrôle avec CSS.

Les éléments block et inline sont essentiels

Avant même d’écrire une seule ligne de CSS, le navigateur applique déjà des styles par défaut à votre page HTML. Il décide notamment comment chaque élément doit s’afficher.

Prenons ce petit exemple :

<h1>Bienvenue sur mon site</h1>
<p>Ceci est un paragraphe avec un <a href="#">lien</a> à l’intérieur.</p>

Même sans CSS, le titre apparaît sur une ligne séparée. Le paragraphe aussi. En revanche, le lien reste intégré dans la phrase.

Pourquoi ? Parce que le titre <h1> et le paragraphe <p> sont des éléments de type block, alors que le lien <a> est un élément de type inline.

Le navigateur ne se demande pas si votre page est jolie. Il suit simplement des règles d’affichage. Votre rôle, avec CSS, sera ensuite d’adapter ces règles pour créer une mise en page claire, agréable et responsive.

Qu’est-ce qu’un élément block en CSS ?

Un élément block est un élément HTML qui occupe toute la largeur disponible de son parent. Il commence généralement sur une nouvelle ligne et pousse les éléments suivants à passer à la ligne eux aussi.

Élément block en CSS

Imaginez une boîte de rangement que vous posez sur une étagère. Même si la boîte est petite, elle réserve toute la place sur sa rangée. Personne ne vient se coller à côté. C’est exactement le comportement d’un élément block.

Les caractéristiques principales d’un élément block

Un élément block possède plusieurs comportements importants :

Il commence sur une nouvelle ligne. Il prend toute la largeur disponible par défaut. Il accepte facilement les propriétés CSS comme widthheightmargin et padding. Il sert souvent à structurer les grandes parties d’une page.

Voici un exemple simple :

<div class="bloc">
  Je suis un élément block.
</div>

<div class="bloc">
  Moi aussi, je passe à la ligne.
</div>
.bloc {
  background-color: #e8f0ff;
  border: 1px solid #3366cc;
  padding: 15px;
  margin-bottom: 10px;
}
Je suis un élément block.
Moi aussi, je passe à la ligne.

Dans cet exemple, chaque <div> s’affiche sur sa propre ligne. Même si le texte est court, le bloc prend toute la largeur disponible.

Exemples courants d’éléments block

Vous utilisez déjà des éléments block très souvent, parfois sans le savoir :

<h1>Un titre principal</h1>
<p>Un paragraphe de texte.</p>
<section>Une section de page.</section>
<article>Un article de blog.</article>
<div>Une boîte générique.</div>

Les balises comme <h1><p><section><article><header><footer> ou encore <div> sont généralement affichées en block par défaut.

Cela ne veut pas dire qu’elles servent toutes à la même chose. Par exemple, <section> a un sens sémantique : elle représente une section de contenu. La balise <div>, elle, est plus neutre. Elle sert surtout à créer une boîte sans signification particulière.

Qu’est-ce qu’un élément inline en CSS ?

Un élément inline, contrairement à un élément block, ne prend que la place nécessaire à son contenu. Il ne force pas de retour à la ligne et peut se glisser naturellement dans un texte.

Élément inline en CSS

C’est un peu comme un mot dans une phrase. Il prend sa place, mais il ne monopolise pas toute la ligne. Il cohabite gentiment avec les autres éléments.

Les caractéristiques principales d’un élément inline

Un élément inline reste sur la même ligne que les autres contenus. Il prend uniquement la largeur de son contenu. Il ne respecte pas toujours width et height. Il est souvent utilisé pour styliser une partie précise d’un texte.

Voici un exemple :

<p>
  Apprendre le <strong>CSS</strong>, c’est beaucoup plus simple
  quand on comprend les bases.
</p>

Apprendre le CSS, c’est beaucoup plus simple quand on comprend les bases.

Ici, la balise <strong> met le mot “CSS” en valeur, mais elle ne crée pas de nouvelle ligne. Elle reste dans le paragraphe.

Autre exemple avec <span> :

<p>
  Ce texte contient un <span class="important">mot important</span>
  dans la phrase.
</p>
.important {
  color: red;
  font-weight: bold;
}

Ce texte contient un mot important dans la phrase.

La balise <span> est très utile quand vous voulez cibler une petite partie d’un texte sans modifier toute la structure.

Exemples courants d’éléments inline

Parmi les éléments inline les plus connus, on retrouve :

<a href="#">Un lien</a>
<span>Un morceau de texte</span>
<strong>Un texte important</strong>
<em>Un texte mis en emphase</em>
<img src="image.jpg" alt="Description de l’image">

Petite précision : l’image <img> est souvent considérée comme un élément inline particulier. Elle se comporte comme un élément en ligne, mais accepte aussi des dimensions avec width et height.

Oui, le web aime parfois mettre un peu de piment dans les règles. Sinon, ce serait trop facile.

Comprendre la différence entre block et inline

Pour bien visualiser la différence, prenons un exemple volontairement simple.

<p>Premier paragraphe</p>
<p>Deuxième paragraphe</p>

<a href="#">Premier lien</a>
<a href="#">Deuxième lien</a>

Le résultat sera le suivant :

  • les deux paragraphes s’affichent l’un sous l’autre,
  • les deux liens HTML restent côte à côte sur la même ligne.

Premier paragraphe

Deuxième paragraphe

Premier lien Deuxième lien

Pourquoi ? Parce que <p> est block, alors que <a> est inline.

La largeur et la hauteur

Un élément block peut recevoir une largeur et une hauteur :

.boite {
  width: 300px;
  height: 150px;
  background-color: #f3f3f3;
  padding: 20px;
}

Avec une balise <div>, cela fonctionne très bien :

<div class="boite">
  Je suis une boîte avec une largeur et une hauteur.
</div>
Je suis une boîte avec une largeur et une hauteur.
Width et Padding en CSS

En revanche, si vous appliquez width et height à un élément inline comme <span>, le résultat risque de vous surprendre :

<span class="etiquette">Nouveau</span>
.etiquette {
  width: 200px;
  height: 80px;
  background-color: yellow;
}
Nouveau

La couleur de fond s’affiche, mais la largeur et la hauteur ne se comportent pas comme prévu. C’est normal : un élément inline n’est pas conçu pour devenir une boîte structurante.

Les marges et les espacements

Les éléments inline acceptent bien le padding, mais les marges verticales peuvent être moins intuitives.

<span class="mot">Nouveau</span>
.mot {
  background-color: #ffeeba;
  padding: 10px;
  margin-top: 30px;
}
Nouveau

Sur un <span>, le padding sera visible, mais margin-top ne déplacera pas vraiment l’élément vers le bas comme avec un bloc.

C’est souvent à ce moment-là que les débutants se disent : “Mais pourquoi mon CSS ne marche pas ?”

Bonne nouvelle : votre CSS marche. C’est juste le type d’affichage de l’élément qui ne correspond pas à ce que vous essayez de faire.

Modifier le comportement avec la propriété display

La propriété CSS display permet de changer la manière dont un élément s’affiche.

C’est elle qui permet de transformer un élément block en inline, un inline en block, ou encore d’utiliser des comportements plus modernes comme flex ou grid.

👉 Tout savoir sur La propriété display CSS

Transformer un élément inline en block

Imaginons que vous vouliez transformer un lien en gros bouton cliquable.

<a href="#" class="bouton">Lire l’article</a>

Par défaut, un lien est inline. Si vous lui ajoutez une largeur, elle ne sera pas forcément prise en compte comme vous l’espérez.

.bouton {
  display: block;
  width: 200px;
  background-color: #222;
  color: white;
  padding: 12px;
  text-align: center;
  text-decoration: none;
}

Grâce à display: block, le lien devient une vraie boîte. Vous pouvez lui donner une largeur, du padding, une couleur de fond et l’aligner plus facilement.

Transformer un élément block en inline

À l’inverse, vous pouvez rendre un élément block plus discret.

Formation web et informatique - Alban Guillier - Formateur

Des formations informatique pour tous !

Débutant ou curieux ? Apprenez le développement web, le référencement, le webmarketing, la bureautique, à maîtriser vos appareils Apple et bien plus encore…

Formateur indépendant, professionnel du web depuis 2006, je vous accompagne pas à pas et en cours particulier, que vous soyez débutant ou que vous souhaitiez progresser. En visio, à votre rythme, et toujours avec pédagogie.

Découvrez mes formations Qui suis-je ?
<p class="info">Disponible maintenant</p>
<p class="info">Offre limitée</p>
.info {
  display: inline;
  background-color: #d4edda;
  padding: 5px;
}

Les paragraphes ne passeront plus automatiquement à la ligne. Ils se placeront sur la même ligne, comme du texte classique.

Cela dit, en pratique, on transforme moins souvent des blocs en inline. Il vaut mieux utiliser les bonnes balises HTML dès le départ quand c’est possible.

Comprendre inline-block

La valeur inline-block est un mélange très pratique entre inline et block.

Un élément en inline-block reste sur la même ligne que les autres, comme un inline. Mais il accepte aussi widthheightmargin et padding comme un block.

Autrement dit, c’est un peu le meilleur des deux mondes.

Exemple avec des boutons

<a href="#" class="btn">Accueil</a>
<a href="#" class="btn">Blog</a>
<a href="#" class="btn">Contact</a>
.btn {
  display: inline-block;
  background-color: #3366cc;
  color: white;
  padding: 12px 20px;
  margin-right: 10px;
  text-decoration: none;
  border-radius: 5px;
}

Ici, les liens restent alignés horizontalement, mais ils se comportent comme de vrais petits blocs. Vous pouvez leur donner du padding, une couleur de fond, une bordure arrondie et un espacement propre.

C’est parfait pour créer des boutons simples.

Attention aux espaces entre inline-block

Quand vous utilisez plusieurs éléments inline-block, il peut y avoir de petits espaces entre eux. Ces espaces viennent souvent des retours à la ligne dans votre HTML :

<div class="carte">Carte 1</div>
<div class="carte">Carte 2</div>
<div class="carte">Carte 3</div>
.carte {
  display: inline-block;
  width: 200px;
  padding: 20px;
  background-color: #f5f5f5;
}
Carte 1
Carte 2
Carte 3

Les cartes peuvent avoir un petit espace entre elles, même si vous n’avez pas mis de margin. Ce n’est pas une erreur grave, mais il faut le savoir.

Aujourd’hui, pour aligner des éléments, on utilise souvent Flexbox ou Grid. Mais inline-block reste très utile pour comprendre les bases de l’affichage CSS.

Cas pratique : créer un menu horizontal

Passons à un exemple concret. Vous voulez créer un petit menu de navigation.

Le HTML du menu

<nav class="menu">
  <a href="#">Accueil</a>
  <a href="#">Tutoriels</a>
  <a href="#">Exercices</a>
  <a href="#">Contact</a>
</nav>

La balise <nav> sert à indiquer une zone de navigation. Les liens <a> sont inline par défaut.

Le CSS du menu

.menu {
  background-color: #222;
  padding: 15px;
}

.menu a {
  display: inline-block;
  color: white;
  text-decoration: none;
  padding: 10px 15px;
}

.menu a:hover {
  background-color: #444;
}

Ici, chaque lien devient un élément inline-block. Cela permet de garder les liens alignés tout en leur donnant une zone cliquable confortable.

Le padding améliore l’expérience utilisateur. Sans lui, l’utilisateur devrait cliquer précisément sur le texte. Avec lui, toute la zone autour du texte devient plus agréable à utiliser.

  • C’est un petit détail, mais sur un vrai site, ce genre de détail change tout.

Les erreurs fréquentes avec les éléments block et inline en CSS

Quand on débute en CSS, certaines erreurs reviennent très souvent. Rassurez-vous, elles sont normales. Tout le monde est passé par là.

Se demander pourquoi width ne fonctionne pas sur un span

Voici un cas classique :

<span class="badge">HTML</span>
.badge {
  width: 150px;
  background-color: orange;
}

Vous vous attendez à voir un badge de 150 pixels. Mais rien ne se passe comme prévu.

La solution consiste à changer son affichage :

.badge {
  display: inline-block;
  width: 150px;
  background-color: orange;
  padding: 8px;
  text-align: center;
}
  • Dès que le <span> devient inline-block, la largeur est prise en compte.

Utiliser div partout

La balise <div> est pratique, mais elle ne doit pas remplacer toutes les autres balises HTML.

Par exemple, même si cela fonctionne :

<div>Mon titre</div>
<div>Mon paragraphe</div>

C’est moins clair que :

<h2>Mon titre</h2>
<p>Mon paragraphe</p>

Le HTML ne sert pas uniquement à afficher des éléments. Il sert aussi à donner du sens au contenu. Un titre doit être un vrai titre. Un paragraphe doit être un vrai paragraphe. Votre CSS vient ensuite améliorer l’apparence.

Croire que display change le sens HTML

Si vous écrivez :

h2 {
  display: inline;
}

Votre titre s’affiche en ligne, mais il reste un titre dans le HTML. La propriété display change l’apparence, pas la signification de la balise.

C’est une nuance importante pour l’accessibilité, le SEO et la qualité globale de votre code.

Bonnes pratiques pour utiliser block et inline en CSS

La première bonne pratique consiste à choisir la bonne balise HTML avant de penser au CSS. Si vous avez un titre, utilisez un titre. Si vous avez un paragraphe, utilisez un paragraphe. Si vous avez une section complète, utilisez <section>.

Ensuite, utilisez display pour adapter l’affichage, mais sans casser la logique de votre document.

Par exemple, transformer un lien en bouton avec display: inline-block est tout à fait logique :

<a href="#" class="bouton">Voir le tutoriel</a>
.bouton {
  display: inline-block;
  padding: 12px 18px;
  background-color: #0066cc;
  color: white;
  text-decoration: none;
  border-radius: 6px;
}

En revanche, utiliser uniquement des <div> parce que “ça marche” est une habitude à éviter. Sur le moment, cela semble plus simple. Mais plus votre site grandit, plus votre code devient difficile à comprendre.

Enfin, n’oubliez pas que blockinline et inline-block sont des bases. Pour les mises en page modernes, vous utiliserez aussi beaucoup Flexbox et CSS Grid. Mais ces outils avancés seront bien plus simples à comprendre si vous maîtrisez déjà le comportement naturel des éléments HTML.

Mini projet : créer une carte de présentation

Pour terminer, créons une petite carte de présentation. Ce mini projet va utiliser des éléments block et inline dans un cas concret.

Le HTML de la carte

<div class="carte-profil">
  <h2>Marie Dupont</h2>
  <p>
    Développeuse web junior passionnée par le HTML, le CSS
    et les interfaces simples à utiliser.
  </p>
  <a href="#" class="lien-profil">Voir le profil</a>
</div>

Ici, la carte est une <div>, car elle sert de conteneur. Le titre <h2> et le paragraphe <p> sont des éléments block. Le lien <a>est inline par défaut, mais nous allons le transformer en bouton.

Le CSS de la carte

.carte-profil {
  width: 320px;
  padding: 20px;
  border: 1px solid #ddd;
  border-radius: 10px;
  background-color: #ffffff;
}

.carte-profil h2 {
  margin-top: 0;
  margin-bottom: 10px;
}

.carte-profil p {
  line-height: 1.6;
  color: #444;
}

.lien-profil {
  display: inline-block;
  margin-top: 10px;
  padding: 10px 16px;
  background-color: #222;
  color: blue;
  text-decoration: none;
  border-radius: 5px;
}

Marie Dupont

Développeuse web junior passionnée par le HTML, le CSS et les interfaces simples à utiliser.

Voir le profil

Analysons rapidement ce qui se passe.

La carte est un bloc avec une largeur fixe. Le titre et le paragraphe se placent naturellement l’un sous l’autre. Le lien, lui, est transformé en inline-block pour devenir un bouton propre, sans prendre toute la largeur.

Si vous remplacez display: inline-block par display: block, le bouton prendra toute la largeur disponible. Cela peut être utile dans certains designs, notamment sur mobile.

.lien-profil {
  display: block;
  text-align: center;
}

Marie Dupont

Développeuse web junior passionnée par le HTML, le CSS et les interfaces simples à utiliser.

Voir le profil

Vous voyez ? Une seule propriété peut changer complètement le comportement visuel d’un élément.

👉 Pour aller plus loin en CSS : WebDesign d’une Card produit

Résumé des comportements à retenir

Un élément block sert généralement à structurer une page. Il prend toute la largeur disponible et commence sur une nouvelle ligne.

Un élément inline sert à styliser ou insérer du contenu à l’intérieur d’une ligne. Il ne prend que la place nécessaire et ne force pas de retour à la ligne.

La propriété display permet de modifier ce comportement. Avec display: block, vous transformez un élément en bloc. Avec display: inline, vous le rendez en ligne. Avec display: inline-block, vous obtenez un compromis très pratique.

Ces notions sont indispensables pour progresser en CSS. Elles vous aideront à mieux comprendre les espacements, les dimensions, les alignements et les mises en page.


Quelle est la différence entre un élément block et inline en CSS ?

Un élément block prend toute la largeur disponible et passe automatiquement à la ligne, comme une balise <div> ou <p>. Un élément inline reste dans le flux du texte et ne prend que la place nécessaire à son contenu, comme <span> ou <a>. Cette différence influence directement la mise en page d’une page web.

Pourquoi la propriété width ne fonctionne pas sur certaines balises HTML ?

La propriété width fonctionne mal ou pas du tout sur les éléments inline classiques, car ils ne sont pas conçus pour gérer des dimensions comme des blocs. Pour appliquer correctement une largeur à un lien ou un <span>, il faut souvent utiliser display: block ou display: inline-block en CSS.

À quoi sert la propriété display en CSS ?

La propriété display permet de modifier le comportement d’affichage d’un élément HTML. Elle sert notamment à transformer un élément block en inline, ou inversement. C’est une propriété essentielle pour créer des mises en page plus propres, aligner des éléments ou construire des boutons et menus de navigation.


Pratiquez, testez, cassez, recommencez

Les éléments block et inline en CSS font partie des bases que l’on sous-estime facilement. Pourtant, ce sont eux qui expliquent beaucoup de petits mystères du quotidien : pourquoi un paragraphe passe à la ligne, pourquoi un lien ne prend pas de largeur, pourquoi un bouton ne ressemble pas encore à un bouton, ou pourquoi une marge refuse obstinément de faire ce que vous voulez.

Le meilleur conseil maintenant, c’est de pratiquer. Créez une petite page HTML, ajoutez des paragraphes, des liens, des titres, des span, des div, puis amusez-vous à changer leur propriété display.

Testez blockinlineinline-block. Observez. Modifiez. Recommencez.

Le CSS devient beaucoup plus clair quand vous acceptez de faire quelques expériences. Et rassurez-vous : même les développeurs expérimentés ouvrent encore l’inspecteur du navigateur pour comprendre pourquoi un élément ne se place pas exactement comme prévu.

C’est normal. C’est même comme ça qu’on apprend vraiment.

Avec ces bases, vous êtes maintenant prêt à aller plus loin vers Flexbox, Grid et les mises en page responsive. Mais cette fois, vous partez avec une fondation solide. Et en CSS, une bonne fondation évite bien des cheveux arrachés.