I'm looking for hints regarding the spacing between table cells. I'm aware of
cellspacing
/ cellpadding
in HTML and their CSS equivalents border-spacing
/ padding
, but they're doing more that what I would expect when going by their names. What I want to achieve is cellspacing as implied by the term: the spacing solely between cells, not between a cell and any element surrounding it.
Here's a picture to show what I mean:
In short, I don't want the spacing as depicted by the red arrows (that is, between cell and table) yet I do desire the spacing between two adjacent cells. Is there any 'easy' way to this, or do I need to go the tedious way of assigning different syles to the 'bordering' cells vs. the 'interior' cells?
Cell padding is the space between cell borders and the content within a cell. To set cell padding in HTML, use the style attribute. The style attribute specifies an inline style for an element. The attribute is used with the HTML <table> tag, with the CSS property padding.
You can easily set padding inside the table cells using the CSS padding property. It is a valid way to produce the same effect as the table's cellpadding attribute. Similarly, you can use the CSS border-spacing property to apply the spacing between adjacent table cell borders like the cellspacing attribute.
The HTML <table> cellspacing Attribute is used to specify the space between the cells. The cellspacing attribute is set in terms of pixels. Attribute Values: pixels: It sets the space between the cells in terms of pixels.
Use the border-spacing property on the table element to set the spacing between cells. Make sure border-collapse is set to separate (or there will be a single border between each cell instead of a separate border around each one that can have spacing between them).
A simple solution, that has always worked for me (even in IE) is to give the table a negative margin
the same size as the border-spacing
.
Quick and dirty sample: http://jsfiddle.net/rBkPQ/
Try this: http://jsfiddle.net/dBSWV/
IE8 doesn't support :last-child
, so if you need it to work there, you'll need to use for example tr.last > td > div
and add a .last
class.
table {
border: 1px solid red
}
td > div {
border: 1px solid #000;
margin: 5px
}
tr:first-child > td > div {
margin-top: 0
}
tr:last-child > td > div {
margin-bottom: 0
}
td:first-child > div {
margin-left: 0
}
td:last-child > div {
margin-right: 0
}
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td><div>Content 1</div></td>
<td><div>Content 2</div></td>
<td><div>Content 3</div></td>
</tr>
..
</table>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With