Comment ajouter une bordure à un tableau
Les tableaux n'ont pas de bordures par défaut. Ajoutez-les en CSS : une border sur chaque cellule dessine la grille, et border-collapse: collapse sur le tableau fusionne chaque paire de bordures voisines en un seul trait.
La propriété raccourcie border prend une largeur, un style et une couleur, dans n'importe quel ordre : 1px solid #6b7280. Mettez-la sur th, td, pas seulement sur table : une bordure sur le tableau ne dessine que le cadre extérieur.
border-collapse : separate ou collapse
border-collapse décide si les cellules partagent leurs bordures.
| Valeur | Résultat |
|---|---|
separate (par défaut) | Chaque cellule a sa propre bordure, avec un écart entre les cellules fixé par border-spacing |
collapse | Les cellules voisines partagent une seule bordure ; border-spacing est ignoré |
Dans le tableau separate, vous voyez les deux couches : le cadre bleu du tableau et une boîte ambre distincte autour de chaque cellule, avec border-spacing entre elles. Remplacez 6px par 0 et les cellules se touchent, mais les traits restent doublés. Seul collapse les fusionne.
Quand deux bordures fusionnées se rencontrent et diffèrent, la plus large l'emporte. À largeur égale, c'est le style qui décide (double bat solid, qui bat dashed et dotted), et en cas d'égalité, la bordure de la cellule bat celle de la ligne, qui bat celle du tableau. C'est pourquoi le bord extérieur du tableau collapse est ambre et non bleu : les cellules et le tableau y ont tous deux des bordures de 2px en solid, et ce sont les cellules qui gagnent.
Uniquement des lignes horizontales, ou uniquement les traits intérieurs
La plupart des tableaux modernes ne dessinent pas tous les traits. Deux schémas courants :
Le second tableau retire la bordure du côté extérieur de chaque cellule de bord. border-inline-start et border-inline-end désignent le début et la fin de la ligne, donc le même CSS reste correct dans les langues de droite à gauche, où la première cellule est de l'autre côté.
Coins de tableau arrondis
border-radius ne fait rien sur un tableau en border-collapse: collapse. Les tableaux arrondis utilisent le modèle separate sans espacement, et dessinent chaque trait une seule fois en ne donnant aux cellules qu'une bordure du bas et une bordure de fin :
Les deux cellules de coin de l'en-tête reçoivent leur propre arrondi pour que le fond gris suive la courbe. Sans lui, leurs coins carrés dépassent de la bordure arrondie. L'arrondi fait 9px, les 10px du tableau moins sa bordure de 1px, pour que les deux courbes coïncident.
Couleur et épaisseur de bordure selon la partie
Les bordures peuvent varier selon la partie du tableau. Des sélecteurs sur thead, tfoot et certaines lignes posent un trait plus épais sous l'en-tête ou au-dessus des totaux :
Les traits de 3px l'emportent sur les traits gris de 1px là où ils se rencontrent, selon les règles de fusion ci-dessus. Pour le reste de la structure du tableau (thead, tfoot, th), voir tableau HTML.
L'attribut border
Les vieux tutoriels utilisent des attributs sur la balise <table> :
<table border="1" cellspacing="0" cellpadding="6">
Les navigateurs respectent encore border="1" : il dessine une bordure sur le tableau et sur chaque cellule, dans le modèle separate, ce qui donne l'aspect doublé. Les trois attributs sont obsolètes en HTML5. Les équivalents CSS sont border sur les cellules, border-spacing (ou border-collapse: collapse) sur le tableau, et padding sur les cellules.
Erreurs fréquentes
- Une bordure seulement sur
table. Vous obtenez un cadre sans traits à l'intérieur. Ajoutez la bordure àth, td. - Oublier
border-collapse: collapse, puis voir des traits doublés. border-radiusavecborder-collapse: collapse. L'arrondi est ignoré.border-spacingavecborder-collapse: collapse. L'espacement ne fonctionne que dans le modèle separate.- Des bordures sur
<tr>dans le modèle separate. Les lignes ne dessinent pas de bordures sauf si le tableau est en collapse ; stylisez plutôt les cellules. - Utiliser
border="1"dans du nouveau code. Cela marche encore, mais ne permet pas de choisir une couleur et c'est obsolète.
Questions fréquentes
Comment ajouter une bordure à un tableau en HTML ?
Utilisez du CSS sur le tableau et ses cellules : table { border-collapse: collapse; } th, td { border: 1px solid #999; }. La bordure des cellules dessine la grille, et border-collapse: collapse fusionne les bordures voisines en traits simples.
Pourquoi mon tableau a des bordures doubles ?
Par défaut, chaque cellule dessine sa propre bordure avec un écart entre les cellules (border-collapse: separate), donc des cellules voisines montrent deux traits. Définissez border-collapse: collapse sur la <table> pour les fusionner en un seul.
L'attribut border de table est-il encore valide ?
<table border="1"> dessine encore des bordures dans tous les navigateurs, mais il est obsolète en HTML5 et ne permet de contrôler ni la couleur ni le style. Utilisez plutôt la propriété CSS border.
Comment arrondir les coins d'un tableau ?
border-radius n'a aucun effet sur un tableau en border-collapse: collapse. Utilisez border-collapse: separate avec border-spacing: 0, mettez l'arrondi sur le tableau, et donnez aux cellules des coins un arrondi assorti (border-start-start-radius et ses équivalents) pour que leur fond ne dépasse pas des coins.
Comment supprimer la bordure d'un tableau ?
Les tableaux n'ont pas de bordure tant que rien n'en ajoute. Retirez l'attribut border de la balise <table>, ou définissez border: none sur table, th, td pour annuler une feuille de style qui en ajoute.