W3docs

La propriété CSS border-collapse

La propriété CSS border-collapse définit si les bordures d'un tableau sont partagées ou fusionnées. Voyez les exemples et comprenez la différence entre les valeurs.

La propriété CSS border-collapse définit si les bordures des cellules d'un tableau sont maintenues séparées ou fusionnées en une seule bordure commune.

Par défaut, chaque cellule d'un <table> dessine sa propre bordure. La limite entre deux cellules adjacentes correspond donc en réalité à deux bordures côte à côte (plus un éventuel espace entre elles), ce qui donne souvent l'apparence d'une ligne épaisse et doublée. La propriété border-collapse vous permet de choisir entre cet aspect classique de tableur et une grille plus épurée à ligne unique.

  • separate (valeur par défaut) — chaque cellule conserve ses propres bordures. La distance entre les bordures des cellules adjacentes est contrôlée par la propriété border-spacing.
  • collapse — les bordures adjacentes fusionnent en une seule. Le navigateur choisit la bordure « gagnante » pour chaque bord partagé en fonction de la largeur, du style et de la couleur, et border-spacing est ignoré.

Cette propriété n'affecte que les éléments <table> et display: inline-table, et c'est l'un des rares cas où les bordures définies sur un <table>, ses lignes et ses cellules interagissent entre elles.

Valeur initialeseparate
S'applique àLes éléments table et inline-table.
HéritageNon.
AnimableNon.
VersionCSS2
Syntaxe DOMobject.style.borderCollapse = "collapse";

Syntaxe

Syntaxe de la propriété CSS border-collapse

border-collapse: separate | collapse | initial | inherit | unset;

Exemple de la propriété border-collapse :

Exemple de la propriété CSS border-collapse avec la valeur collapse

<!DOCTYPE html>
<html>
  <head>
    <title>The title of the document</title>
    <style>
      table {
        border-collapse: collapse;
      }
      table,
      th,
      td {
        border: 1px solid #cccccc;
      }
      thead {
        background-color: #1c87c9;
        color: #ffffff;
      }
      th {
        height: 50px;
        text-align: center;
      }
      td {
        padding: 3px 10px;
      }
    </style>
  </head>
  <body>
    <h2>Border-collapse property example</h2>
    <p>Here the "collapse" value is set for the border-collapse property.</p>
    <table>
      <thead>
        <tr>
          <th>Heading</th>
          <th>Heading</th>
          <th>Heading</th>
          <th>Heading</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>Some text</td>
          <td>Some text</td>
          <td>Some text</td>
          <td>Some text</td>
        </tr>
        <tr>
          <td>Some text</td>
          <td>Some text</td>
          <td>Some text</td>
          <td>Some text</td>
        </tr>
      </tbody>
    </table>
  </body>
</html>

Résultat

Propriété CSS border-collapse

Dans l'exemple ci-dessous, vous pouvez voir le contraste directement. Lorsque border-collapse: separate est utilisé, la propriété border-spacing définit l'écart entre les cellules. Lorsque border-collapse: collapse est utilisé, border-spacing n'a aucun effet — les cellules se touchent et leurs bordures fusionnent.

Exemple de la propriété border-collapse avec les valeurs « separate » et « collapse » :

Exemple de la propriété CSS border-collapse avec la valeur separate

<!DOCTYPE html>
<html>
  <head>
    <title>The title of the document</title>
    <style>
      table,
      td,
      th {
        border: 1px solid #ccc;
      }
      thead {
        background-color: #1c87c9;
        color: #ffffff;
      }
      th {
        height: 30px;
        text-align: center;
      }
      td {
        padding: 3px 10px;
      }
      #table1 {
        border-collapse: separate;
        border-spacing: 10px;
      }
      #table2 {
        border-collapse: collapse;
        border-spacing: 10px; /* ignored when border-collapse is collapse */
      }
    </style>
  </head>
  <body>
    <h1>Border-collapse property example</h1>
    <h2>border-collapse: separate;</h2>
    <p>When using the "border-collapse: separate", the border-spacing property can be used to define the space between the cells.</p>
    <table id="table1">
      <thead>
        <tr>
          <th>Heading</th>
          <th>Heading</th>
          <th>Heading</th>
          <th>Heading</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>Some text</td>
          <td>Some text</td>
          <td>Some text</td>
          <td>Some text</td>
        </tr>
        <tr>
          <td>Some text</td>
          <td>Some text</td>
          <td>Some text</td>
          <td>Some text</td>
        </tr>
      </tbody>
    </table>
    <h2>border-collapse: collapse;</h2>
    <p>When using the "border-collapse: collapse", the border-spacing property has no effect.</p>
    <table id="table2">
      <thead>
        <tr>
          <th>Heading</th>
          <th>Heading</th>
          <th>Heading</th>
          <th>Heading</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>Some text</td>
          <td>Some text</td>
          <td>Some text</td>
          <td>Some text</td>
        </tr>
        <tr>
          <td>Some text</td>
          <td>Some text</td>
          <td>Some text</td>
          <td>Some text</td>
        </tr>
      </tbody>
    </table>
  </body>
</html>

Valeurs

ValeurDescription
separateChaque cellule possède ses propres bordures. C'est la valeur par défaut. La propriété border-spacing contrôle la distance entre les cellules.
collapseLes cellules partagent leurs bordures. Les bordures adjacentes fusionnent en une seule bordure.
initialDéfinit la propriété à sa valeur par défaut.
inheritHérite la propriété de son élément parent.
unsetRéinitialise la propriété à sa valeur initiale.

Fonctionnement du modèle de fusion

Lorsque border-collapse: collapse est défini, chaque bord partagé ne peut afficher qu'une seule bordure. Le navigateur doit donc résoudre les conflits entre les bordures déclarées sur le tableau, la ligne et les deux cellules adjacentes. Les règles, dans l'ordre, sont les suivantes :

  1. Une bordure avec border-style: hidden l'emporte toujours et supprime entièrement le bord.
  2. Une bordure plus large l'emporte sur une bordure plus étroite.
  3. Si les largeurs sont égales, les styles sont classés ainsi : double > solid > dashed > dotted > ridge > outset > groove > inset.
  4. Si la largeur et le style sont encore à égalité, la bordure appartenant à l'élément le plus proche de la cellule l'emporte (la cellule prime sur la ligne, qui prime sur le tableau).

C'est pourquoi, en mode fusionné, définir des largeurs de bordure différentes sur <td> et <table> peut ne pas produire le résultat attendu — seule la bordure gagnante est dessinée.

Quand l'utiliser

  • Utilisez collapse pour la plupart des tableaux de données. Cela produit une grille propre à ligne unique, telle que les utilisateurs la connaissent des tableurs, et c'est le moyen le plus simple d'éviter les bordures doublées.
  • Conservez separate lorsque vous souhaitez un espacement visible entre les cellules (définissez border-spacing), des coins arrondis sur les cellules, ou des bordures par cellule qui ne fusionnent pas.
  • Notez que border-radius sur les cellules n'a un effet visible qu'en mode separate ; les bordures fusionnées ne peuvent pas être arrondies.

Pratique

Pratique
Que fait la propriété 'border-collapse' en CSS ?
Que fait la propriété 'border-collapse' en CSS ?

Ressources connexes

Was this page helpful?