ComparaisonComparaisons

border vs outline

border fait partie du modèle de boîte et agrandit l’élément, alors que outline dessine un contour à l’extérieur, sans effet sur la mise en page ni la taille.

Sur cette page

Comparaison point par point

#
  • Affecte la taille de l’élément

    border
    Oui, elle l’agrandit (sauf avec border-box)
    outline
    Non, elle se dessine à l’extérieur sans prendre de place
  • Peut styliser chaque côté séparément

    border
    Oui, par ex. border-top
    outline
    Non, c’est un seul rectangle autour de l’élément entier
  • Arrondi via border-radius

    border
    Le définit
    outline
    Oui, les navigateurs récents arrondissent le contour avec l’élément
  • Décalage par rapport à l’élément

    border
    Impossible sans élément supplémentaire
    outline
    Oui, via outline-offset
  • Utilisation par défaut du navigateur

    border
    Aucune
    outline
    Indicateur de focus clavier
  • Utilisation typique

    border
    Cadres des cartes, des champs et des boutons
    outline
    Indicateur :focus-visible, mise en évidence pour le débogage

Exemple

#
CSS
.card {
  border: 2px solid #3f3f46;
}

.card:focus-visible {
  outline: 3px solid #a78bfa;
  outline-offset: 3px;
}
Aperçu

Définition et utilisation

#

La propriété border fait pleinement partie du modèle de boîte. Elle s’ajoute à la taille de l’élément, sauf si vous activez box-sizing: border-box, et vous pouvez styliser chaque côté séparément avec border-top, border-right, etc. L’arrondi des coins via border-radius concerne justement la bordure.

outline se dessine à l’extérieur de la bordure et n’affecte jamais la taille ni la mise en page des éléments voisins. Impossible de la styliser côté par côté : c’est toujours un seul rectangle autour de l’élément entier. Les navigateurs modernes l’arrondissent avec border-radius, et outline-offset permet de l’écarter du bord.

Par défaut, les navigateurs utilisent outline pour montrer le focus clavier, ce qui en fait un choix naturel pour vos propres indicateurs de focus et pour déboguer une mise en page, car elle ne déplace jamais le contenu. Réservez border aux cadres visibles des cartes, des champs et des boutons qui font partie du design.

Syntaxe

#
Syntaxe
border: <épaisseur> <style> <couleur>;
outline: <épaisseur> <style> <couleur>;

Plus d’exemples

#
Outline ne prend pas de place dans la mise en page
CSS
.box-outline { outline: 6px solid #f59e0b; }
Aperçu

Malgré l’épais contour, les éléments 1 et 3 restent à la même place que sans lui.

La même épaisseur en border écarte les voisins
CSS
.box-border { border: 6px solid #f59e0b; }
Aperçu

Ce même élément, avec une bordure de la même épaisseur, repousse ses voisins 1 et 3 pour se faire de la place.

Bonnes pratiques

#
  • Pour l’indicateur de focus clavier, utilisez outline, de préférence avec :focus-visible, pour ne pas déplacer la mise en page.
  • Si vous avez besoin d’une épaisseur de bordure différente sur un seul côté, ce doit être border. Outline n’est qu’un seul rectangle.
  • outline-offset écarte le contour de l’élément sans changer sa taille.

Entrées associées

#

Vous voyez une erreur ou il manque un exemple ? Écrivez-nous.