Dans mon document HTML, j'ai un tableau avec deux colonnes et plusieurs lignes. Comment puis-je augmenter l'espace entre la première et la deuxième colonne avec CSS? J'ai essayé d'appliquer "margin-right: 10px;" à chacune des cellules du côté gauche, mais sans effet.
95
Réponses:
Appliquez ceci à votre premier
<td>
:Exemple HTML:
la source
border-collapse: separate
(il y avait une faute de frappe dans l'orthographeseparate
ci - dessus)border-spacing: 5px;
border-spacing
ajoute également de l'espace entre les lignes. Malheureusement, il n'y a pas de propriété distincte pour l'espacement vertical et horizontal.border-spacing
prend deux arguments - un pour horizontal et un pour vertical.Un mot d'avertissement: bien que cela
padding-right
puisse résoudre votre problème (visuel) particulier, ce n'est pas la bonne façon d'ajouter de l'espacement entre les cellules du tableau. Ce quepadding-right
fait pour une cellule est similaire à ce qu'il fait pour la plupart des autres éléments: cela ajoute de l'espace dans la cellule. Si les cellules n'ont pas de bordure ou de couleur d'arrière-plan ou quelque chose d'autre qui donne le jeu, cela peut imiter l'effet de définir l'espace entre les cellules, mais pas autrement.Comme quelqu'un l'a noté, les spécifications de marge sont ignorées pour les cellules de tableau:
Spécification CSS 2.1 - Tableaux - Présentation visuelle du contenu des tableaux
Quelle est la "bonne" façon alors? Si vous cherchez à remplacer l'
cellspacing
attribut de la table, alorsborder-spacing
(avecborder-collapse
désactivé) est un remplacement. Cependant, si des "marges" par cellule sont nécessaires, je ne sais pas comment cela peut être correctement réalisé en utilisant CSS. Le seul hack auquel je puisse penser est d'utiliserpadding
comme ci-dessus, d'éviter tout style des cellules (couleurs d'arrière-plan, bordures, etc.) et d'utiliser à la place des conteneurs DIV à l'intérieur des cellules pour implémenter un tel style.Je ne suis pas un expert CSS, donc je pourrais bien me tromper dans ce qui précède (ce qui serait bien à savoir! Je voudrais moi aussi une solution CSS de marge de cellule de tableau).
À votre santé!
la source
Si vous ne pouvez pas utiliser de remplissage (par exemple, vous avez des bordures dans td) essayez ceci
la source
Je me rends compte que c'est assez tardif, mais pour mémoire, vous pouvez également utiliser des sélecteurs CSS pour ce faire (éliminant le besoin de styles en ligne.) Ce CSS applique un rembourrage à la première colonne de chaque ligne:
Et ce serait votre HTML, sans CSS!:
Cela permet un balisage beaucoup plus élégant, en particulier dans les cas où vous devez faire beaucoup de mise en forme spécifique avec CSS.
la source
La marge ne fonctionne malheureusement pas sur les cellules individuelles, cependant vous pouvez ajouter des colonnes supplémentaires entre les deux cellules que vous souhaitez mettre un espace entre ... une autre option consiste à utiliser une bordure de la même couleur que l'arrière-plan ...
la source
Vous pouvez simplement le faire:
Aucun CSS n'est requis :) Ce 10px est votre espace.
la source
Essayez
padding-right
. Vous n'êtes pas autorisé à mettremargin
entre les cellules.la source
Utilisation de border-collapse: séparé; n'a pas fonctionné pour moi, car je n'ai besoin que d'une marge entre les cellules du tableau et non sur les côtés du tableau.
J'ai proposé la solution suivante:
- CSS
- HTML
la source
Cette solution fonctionne pour ceux
td
qui ont besoin à la foisborder
etpadding
pour le style.(Testé sur Chrome 32, IE 11, Firefox 25)
Mise à jour 2016
Firefox le prend désormais en charge sans
inline-block
et un ensemblewidth
la source
Vous ne pouvez pas distinguer des colonnes individuelles dans une cellule de cette manière. À mon avis, votre meilleure option est d'ajouter un
style='padding-left:10px'
sur la deuxième colonne et d'appliquer les styles sur un div interne ou un élément. De cette façon, vous pouvez obtenir l'illusion d'un espace plus grand.la source
Si vous avez le contrôle de la largeur du tableau, insérez un remplissage à gauche sur toutes les cellules du tableau et insérez une marge négative à gauche sur l'ensemble du tableau.
Notez que la largeur du tableau doit inclure la largeur de remplissage / marge. En utilisant ce qui précède comme exemple, la largeur visuelle du tableau sera de 700 px.
Ce n'est pas la meilleure solution si vous utilisez des bordures sur les cellules de votre tableau.
la source
SOLUTION
J'ai trouvé que le meilleur moyen de résoudre ce problème était une combinaison d'essais et d'erreurs et de lire ce qui était écrit avant moi:
http://jsfiddle.net/MG4hD/
Comme vous pouvez le voir, j'ai des choses assez délicates en cours ... mais le principal facteur de succès pour que cela soit beau est:
ÉLÉMENT PARENT (UL): border-collapse: séparé; espacement des bordures: .25em; marge gauche: -.25em;
ÉLÉMENTS ENFANTS (LI): affichage: cellule-table; alignement vertical: milieu;
HTML
CSS
la source
Suite à la solution de Cian consistant à définir une bordure à la place d'une marge, j'ai découvert que vous pouvez définir la couleur de la bordure sur transparente pour éviter d'avoir à faire correspondre la couleur de l'arrière-plan. Fonctionne sous FF17, IE9, Chrome v23. Cela semble être une solution décente à condition que vous n'ayez pas besoin d'une frontière réelle.
la source
Utiliser le rembourrage n'est pas une bonne façon de le faire, cela peut changer l'apparence mais ce n'est pas ce que vous vouliez. Cela peut résoudre votre problème.
la source
Vous pouvez utiliser les deux:
Mais il vaut mieux utiliser avec % .
la source
%
Si le remplissage ne fonctionne pas pour vous, une autre solution consiste à ajouter des colonnes supplémentaires et à définir une marge via la largeur à l'aide de
<colgroup>
. Aucune des solutions de remplissage ci-dessus ne fonctionnait pour moi car j'essayais de donner une marge à la bordure de la cellule elle-même, et c'est ce qui a résolu le problème à la fin:Style les bordures des cellules du tableau en utilisant: nth-child de sorte que les deuxième et troisième colonnes apparaissent comme une seule colonne.
la source