Kyle Cronin Kyle Cronin - 2 months ago 8
HTML Question

Border around specific rows in a table?

I'm trying to design some HTML/CSS that can put a border around specific rows in a table. Yes, I know I'm not really supposed to use tables for layout but I don't know enough CSS to completely replace it yet.

Anyways, I have a table with multiple rows and columns, some merged with rowspan and colspan, and I'd like to put a simple border around parts of the table. Currently, I'm using 4 separate CSS classes (top, bottom, left, right) that I attach to the

<td>
cells that are along the top, bottom, left, and right of the table respectively.

<html>
<head>

<style type="text/css">
.top {
border-top:thin solid;
border-color:black;
}

.bottom {
border-bottom:thin solid;
border-color:black;
}

.left {
border-left:thin solid;
border-color:black;
}

.right {
border-right:thin solid;
border-color:black;
}
</style>

</head>
<body>

<table cellspacing="0">
<tr>
<td>no border</td>
<td>no border here either</td>
</tr>
<tr>
<td class="top left">one</td>
<td class="top right">two</td>
</tr>
<tr>
<td class="bottom left">three</td>
<td class="bottom right">four</td>
</tr>
<tr>
<td colspan="2">once again no borders</td>
</tr>
<tr>
<td class="top bottom left right" colspan="2">hello</td>
</tr>
<tr>
<td colspan="2">world</td>
</tr>
</table>
</html>


Is there any easier way to do what I want? I tried applying top and bottom to a
<tr>
but it didn't work. (p.s. I'm new to CSS, so there's probably a really basic solution to this that I've missed.)

note: I do need to have multiple bordered sections. The basic idea is to have multiple bordered clusters each containing multiple rows.

Answer

How about tr {outline: thin solid black;}? Works for me on tr or tbody elements, and appears to be compatible with the most browsers, including IE 8+ but not before.