Dans un tableau HTML, l'élément cellpadding
y cellspacing
peut être défini comme suit :
<table cellspacing="1" cellpadding="1">
Comment peut-on faire la même chose avec CSS ?
Dans un tableau HTML, l'élément cellpadding
y cellspacing
peut être défini comme suit :
<table cellspacing="1" cellpadding="1">
Comment peut-on faire la même chose avec CSS ?
Principes de base
Pour contrôler le "cellpadding" en CSS, vous pouvez simplement utiliser padding
sur les cellules du tableau. Par exemple, pour 10px de "cellpadding" :
td {
padding: 10px;
}
Pour l'"espacement des cellules", vous pouvez appliquer la méthode border-spacing
CSS à votre tableau. Par exemple, pour 10px de "cellspacing" :
table {
border-spacing: 10px;
border-collapse: separate;
}
Cette propriété permet même de séparer l'espacement horizontal et l'espacement vertical, ce qui n'était pas possible avec l'ancien "espacement des cellules".
Problèmes avec IE ≤ 7
Cela fonctionnera dans presque tous les navigateurs courants, à l'exception d'Internet Explorer jusqu'à Internet Explorer 7, où vous n'aurez presque pas de chance. Je dis "presque" parce que ces navigateurs prennent toujours en charge le format border-collapse
qui fusionne les bordures des cellules de tableau adjacentes. Si vous essayez d'éliminer l'espacement des cellules (c'est-à-dire, cellspacing="0"
) alors border-collapse:collapse
devrait avoir le même effet : pas d'espace entre les cellules du tableau. Cette prise en charge est cependant boguée, car elle ne remplace pas une fonction existante de l'option cellspacing
attribut HTML de l'élément table.
En bref : pour les navigateurs autres qu'Internet Explorer 5-7, border-spacing
s'occupe de vous. Pour Internet Explorer, si votre situation est parfaite (vous voulez un espacement de 0 cellule et votre tableau ne l'a pas déjà défini), vous pouvez utiliser border-collapse:collapse
.
table {
border-spacing: 0;
border-collapse: collapse;
}
Note : Pour une excellente vue d'ensemble des propriétés CSS que l'on peut appliquer aux tableaux et pour quels navigateurs, voir ceci fantastique page Quirksmode .
Cellpadding="0" peut encore faire la différence dans Chrome 13.0.782.215, même si border-collapse:collapse et border-spacing sont appliqués au tableau.
C'est certainement logique en raison de la spécificité de la css, de sorte que vous devrez peut-être appliquer les styles à un identifiant css pour une spécificité maximale. Il n'est pas certain que cela permette de remplacer les valeurs des attributs dans tous les cas, mais c'est l'endroit où il faut commencer à vérifier.
Le comportement par défaut du navigateur est équivalent à :
table {border-collapse: collapse;}
td {padding: 0px;}
Définit la quantité d'espace entre le contenu de la cellule et la paroi cellulaire.
table {border-collapse: collapse;}
td {padding: 6px;}
Contrôle l'espace entre les cellules du tableau
table {border-spacing: 2px;}
td {padding: 0px;}
table {border-spacing: 2px;}
td {padding: 6px;}
table {border-spacing: 8px 2px;}
td {padding: 6px;}
Remarque : S'il y a
border-spacing
il indiqueborder-collapse
du tableau estseparate
.
Ici vous pouvez trouver l'ancienne méthode HTML pour y parvenir.
Comment l'espacement autour de la table disparaît-il ? Lorsque je définis "border-spacing : 8px 12px, il ajoute l'espacement non seulement entre, mais aussi entre la bordure du tableau et les cellules extérieures ! Mais ce n'est pas ce que montrent les images ici ; elles sont alignées à gauche.
@2astalavista Et malheureusement, si quelqu'un veut supprimer l'effet de l'espacement extérieur, cela ne fonctionnera pas de cette façon avec ces attributs CSS.
@Kaz Vous pourriez avoir besoin d'utiliser une marge négative pour cacher cette partie gênante.
C'est en fait la seule chose que j'ai pu faire fonctionner pour moi, bien que j'aie appliqué l'information à un identifiant pour éviter d'être trop général.
C'est cellspacing=0
équivalent. L'équivalent pour cellspacing=1
est complètement différent. Voir la réponse acceptée.
Ne devrait pas table td
y table th
être simplement td
y th
respectivement ? Cela fonctionne dans les deux cas, mais un sélecteur plus petit permet une mise en correspondance légèrement plus rapide.
Le réglage des marges sur les cellules des tableaux n'a pas vraiment d'effet, pour autant que je sache. Le véritable équivalent CSS de cellspacing
est border-spacing
- mais il ne fonctionne pas dans Internet Explorer.
Vous pouvez utiliser border-collapse: collapse
pour régler de manière fiable l'espacement des cellules à 0, mais pour toute autre valeur, je pense que la seule solution inter-navigateurs est de continuer à utiliser la fonction cellspacing
attribut.
C'est presque correct, mais border-collapse
ne fonctionne que dans IE 5-7 si le tableau n'a pas déjà un nom de fichier cellspacing
défini. J'ai rédigé une réponse complète qui fusionne toutes les parties correctes des autres réponses de cette page, au cas où cela serait utile.
Pour être honnête, qui se soucie d'Internet Explorer ? Tous ceux qui l'utilisent devraient savoir que les sites web cassés sont leur faute - pour avoir utilisé un navigateur de si mauvaise qualité. Les sites web ne devraient pas avoir à gérer cela. Laissez Internet Explorer se perdre. Oubliez le soutien. Nous n'en avons pas besoin et c'est une plaie à développer.
Cette astuce fonctionne avec Internet Explorer 6 et les versions ultérieures, Google Chrome , Firefox, et Opéra :
table {
border-collapse: separate;
border-spacing: 10px; /* cellspacing */
*border-collapse: expression('separate', cellSpacing = '10px');
}
table td, table th {
padding: 10px; /* cellpadding */
}
En *
La déclaration est destinée à Internet Explorer 6 et 7, et les autres navigateurs l'ignoreront.
expression('separate', cellSpacing = '10px')
retours 'separate'
mais les deux instructions sont exécutées, car en JavaScript, vous pouvez passer plus d'arguments que prévu et ils seront tous évalués.
Pour ceux qui souhaitent envoyer des courriels réactifs, notez que * n'est pas reconnu par outlook 2007+ (qui utilise word comme moteur de rendu). campaignmonitor.com/css
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
11 votes
Juste une suggestion générale, vérifiez si votre style.css fait une "réinitialisation" sur vos tables avant d'essayer ces solutions. Exemple : Si vous n'avez pas réglé les tableaux sur
width:auto
puisborder-collapse
pourrait ne pas fonctionner comme prévu.3 votes
Utilisez l'espacement des bordures pour les tables et le rembourrage pour les td.
6 votes
"Oh, dang, à l'époque, je faisais cela avec
cellpadding
ycellspacing
... qu'est-ce que c'est en CSS déjà ?" -Moi, à peu près à chaque fois que j'ai besoin de le faire.