Applying borders to a single table cell when using border-collapse

Brant Bobby picture Brant Bobby · Aug 6, 2009 · Viewed 27.2k times · Source

I have a table with the following CSS rules applied:

table { border-collapse: collapse; }
td { border: 2px solid Gray; }

I want certain cells to have a red border, instead.

td.special { border: 2px solid Red; }

This doesn't work as I'd expect. In FireFox 3 and IE8 it looks like this:

IE8/FF3 rendering
(source: control-v.net)

In IE7 Compatibility mode (Running in IE8) it looks like this:

IE7 Compatibility mode rendering
(source: control-v.net)

I want all four sides of the <td> to be red. How can I do this? A test case can be found here.

Answer

aebabis picture aebabis · Oct 9, 2014

There's another post on the site I read a while ago that gracefully solves this problem, but I couldn't find it. Anyway, the approach was to make the border-style double instead of solid. This works because double has a higher priority than solid. On 1px or 2px borders, the gap between the double lines doesn't appear because the lines overlap.

table { border-collapse: collapse; }
td { border: 2px solid Gray; }
td.special { border: 2px double Red; }
<table>
    <tr><td>a</td><td>a</td><td>a</td></tr>
    <tr><td>a</td><td class="special">a</td><td>a</td></tr>
    <tr><td>a</td><td>a</td><td>a</td></tr>
</table>