I have an html table that I want to display in 2 columns. Most rows are addresses; a few are neighborhoods. I want to prevent a column break after a neighborhood row. How do I accomplish this? In the example below, how do I prevent a column break after the .neighborhood row containing "B:"?
#addresses {
column-count: 2;
}
<div id="addresses">
<table>
<tbody>
<tr class="neighborhood"><td colspan="2">A:</td></tr>
<tr class="address"><td>1 Street</td><td>Smith</td></tr>
<tr class="address"><td>2 Street</td><td>Jones</td></tr>
<tr class="address"><td>3 Street</td><td>Smith</td></tr>
<tr class="address"><td>4 Street</td><td>Jones</td></tr>
<tr class="address"><td>5 Street</td><td>Smith</td></tr>
<tr class="address"><td>6 Street</td><td>Jones</td></tr>
<tr class="address"><td>7 Street</td><td>Smith</td></tr>
<tr class="address"><td>8 Street</td><td>Jones</td></tr>
<tr class="address"><td>9 Street</td><td>Smith</td></tr>
<tr class="address"><td>10 Street</td><td>Jones</td></tr>
<tr class="address"><td>11 Street</td><td>Smith</td></tr>
<tr class="neighborhood"><td colspan="2">B:</td></tr>
<tr class="address"><td>12 Street</td><td>Jones</td></tr>
<tr class="address"><td>13 Street</td><td>Smith</td></tr>
<tr class="address"><td>14 Street</td><td>Jones</td></tr>
<tr class="address"><td>15 Street</td><td>Smith</td></tr>
<tr class="neighborhood"><td colspan="2">C:</td></tr>
<tr class="address"><td>16 Street</td><td>Jones</td></tr>
<tr class="address"><td>17 Street</td><td>Smith</td></tr>
<tr class="address"><td>18 Street</td><td>Jones</td></tr>
<tr class="address"><td>19 Street</td><td>Smith</td></tr>
<tr class="address"><td>20 Street</td><td>Jones</td></tr>
<tr class="address"><td>21 Street</td><td>Smith</td></tr>
<tr class="address"><td>22 Street</td><td>Jones</td></tr>
<tr class="address"><td>23 Street</td><td>Smith</td></tr>
</tbody>
</table>
</div>
I have an html table that I want to display in 2 columns. Most rows are addresses; a few are neighborhoods. I want to prevent a column break after a neighborhood row. How do I accomplish this? In the example below, how do I prevent a column break after the .neighborhood row containing "B:"?
#addresses {
column-count: 2;
}
<div id="addresses">
<table>
<tbody>
<tr class="neighborhood"><td colspan="2">A:</td></tr>
<tr class="address"><td>1 Street</td><td>Smith</td></tr>
<tr class="address"><td>2 Street</td><td>Jones</td></tr>
<tr class="address"><td>3 Street</td><td>Smith</td></tr>
<tr class="address"><td>4 Street</td><td>Jones</td></tr>
<tr class="address"><td>5 Street</td><td>Smith</td></tr>
<tr class="address"><td>6 Street</td><td>Jones</td></tr>
<tr class="address"><td>7 Street</td><td>Smith</td></tr>
<tr class="address"><td>8 Street</td><td>Jones</td></tr>
<tr class="address"><td>9 Street</td><td>Smith</td></tr>
<tr class="address"><td>10 Street</td><td>Jones</td></tr>
<tr class="address"><td>11 Street</td><td>Smith</td></tr>
<tr class="neighborhood"><td colspan="2">B:</td></tr>
<tr class="address"><td>12 Street</td><td>Jones</td></tr>
<tr class="address"><td>13 Street</td><td>Smith</td></tr>
<tr class="address"><td>14 Street</td><td>Jones</td></tr>
<tr class="address"><td>15 Street</td><td>Smith</td></tr>
<tr class="neighborhood"><td colspan="2">C:</td></tr>
<tr class="address"><td>16 Street</td><td>Jones</td></tr>
<tr class="address"><td>17 Street</td><td>Smith</td></tr>
<tr class="address"><td>18 Street</td><td>Jones</td></tr>
<tr class="address"><td>19 Street</td><td>Smith</td></tr>
<tr class="address"><td>20 Street</td><td>Jones</td></tr>
<tr class="address"><td>21 Street</td><td>Smith</td></tr>
<tr class="address"><td>22 Street</td><td>Jones</td></tr>
<tr class="address"><td>23 Street</td><td>Smith</td></tr>
</tbody>
</table>
</div>
EDIT: Since posting, I have discovered that column-count is ignored in FF and Tor browsers. (All okay in Chrome, Opera, Edge, Brave browsers and Android device.)
And adding -moz-column-count: 2; -webkit-column-count: 2; had no effect.
And if I move the column-count property to the table, it fails on all browsers.
Share Improve this question edited Mar 31 at 12:46 DarkBee 15.5k8 gold badges72 silver badges117 bronze badges asked Mar 31 at 12:05 oyveyoyvey 6091 gold badge9 silver badges20 bronze badges 7 | Show 2 more comments1 Answer
Reset to default 2Use break-after
and avoid
or avoid-column
as the value.
avoid
is supported by Firefox although avoid-column
is not.
The
break-after
CSS property sets how page, column, or region breaks should behave after a generated box.
#addresses {
column-count: 2;
}
.neighborhood {
break-after: avoid;
}
<div id="addresses">
<table>
<tbody>
<tr class="neighborhood">
<td colspan="2">A:</td>
</tr>
<tr class="address">
<td>1 Street</td>
<td>Smith</td>
</tr>
<tr class="address">
<td>2 Street</td>
<td>Jones</td>
</tr>
<tr class="address">
<td>3 Street</td>
<td>Smith</td>
</tr>
<tr class="address">
<td>4 Street</td>
<td>Jones</td>
</tr>
<tr class="address">
<td>5 Street</td>
<td>Smith</td>
</tr>
<tr class="address">
<td>6 Street</td>
<td>Jones</td>
</tr>
<tr class="address">
<td>7 Street</td>
<td>Smith</td>
</tr>
<tr class="address">
<td>8 Street</td>
<td>Jones</td>
</tr>
<tr class="address">
<td>9 Street</td>
<td>Smith</td>
</tr>
<tr class="address">
<td>10 Street</td>
<td>Jones</td>
</tr>
<tr class="address">
<td>11 Street</td>
<td>Smith</td>
</tr>
<tr class="neighborhood">
<td colspan="2">B:</td>
</tr>
<tr class="address">
<td>12 Street</td>
<td>Jones</td>
</tr>
<tr class="address">
<td>13 Street</td>
<td>Smith</td>
</tr>
<tr class="address">
<td>14 Street</td>
<td>Jones</td>
</tr>
<tr class="address">
<td>15 Street</td>
<td>Smith</td>
</tr>
<tr class="neighborhood">
<td colspan="2">C:</td>
</tr>
<tr class="address">
<td>16 Street</td>
<td>Jones</td>
</tr>
<tr class="address">
<td>17 Street</td>
<td>Smith</td>
</tr>
<tr class="address">
<td>18 Street</td>
<td>Jones</td>
</tr>
<tr class="address">
<td>19 Street</td>
<td>Smith</td>
</tr>
<tr class="address">
<td>20 Street</td>
<td>Jones</td>
</tr>
<tr class="address">
<td>21 Street</td>
<td>Smith</td>
</tr>
<tr class="address">
<td>22 Street</td>
<td>Jones</td>
</tr>
<tr class="address">
<td>23 Street</td>
<td>Smith</td>
</tr>
</tbody>
</table>
</div>
column-count
has nothing to do with the columns intable
elements – it defines columns inside adiv
, for which you usually need to define aheight
on the parent element. In your case, the parent element only contains ONE child, i.e. the table, socolumn-count
has no effect at all here. – Johannes Commented Mar 31 at 12:53table, tbody, tr { display: block; } tbody { column-count: 2; }
(and nocolumn-count
on anything else.) – C3roe Commented Mar 31 at 13:21