For some reason I always forget how to do this, and most tutorials out there suggest wrapping your table in a container <div>
tag but as long as you’re using <tbody>
(and, ideally, not using <thead>
or <tfoot>
) then it’s easy with a small bit of CSS and no HTML changes at all.
The trick is to display your <table>
as a block, and your <tbody>
as a table!
Here’s the code. Fit it into whichever breakpoint makes sense for your site. Mine shown here is the standard phone width breakpoint for WordPress (782 pixels):
@media screen and (max-width: 782px) {
table {
display: block;
overflow-x: auto;
width: 100%;
}table tbody {
display: table;
width: auto;
}}
Of course, right after I posted this I found that I had already written about it two years ago with a slightly different solution. Never hurts to have a slightly different perspective.