Responsive Table ('-' * 16) Table collapses into a "list" on small screens. Headers are pulled from data attributes.
A Pen by Geoff Yuen on CodePen.
<h1>RWD List to Table</h1> | |
<table class="rwd-table"> | |
<tr> | |
<th>Movie Title</th> | |
<th>Genre</th> | |
<th>Year</th> | |
<th>Gross</th> | |
</tr> | |
<tr> | |
<td data-th="Movie Title">Star Wars</td> | |
<td data-th="Genre">Adventure, Sci-fi</td> | |
<td data-th="Year">1977</td> | |
<td data-th="Gross">$460,935,665</td> | |
</tr> | |
<tr> | |
<td data-th="Movie Title">Howard The Duck</td> | |
<td data-th="Genre">"Comedy"</td> | |
<td data-th="Year">1986</td> | |
<td data-th="Gross">$16,295,774</td> | |
</tr> | |
<tr> | |
<td data-th="Movie Title">American Graffiti</td> | |
<td data-th="Genre">Comedy, Drama</td> | |
<td data-th="Year">1973</td> | |
<td data-th="Gross">$115,000,000</td> | |
</tr> | |
</table> | |
<p>← Drag window (in editor or full page view) to see the effect. →</p> |
Responsive Table ('-' * 16) Table collapses into a "list" on small screens. Headers are pulled from data attributes.
A Pen by Geoff Yuen on CodePen.
// Responsive table method using display:block and data attributes | |
// Thanks to @leefroese for suggestion about data attributes |
@import "compass/css3"; | |
// More practical CSS... | |
// using mobile first method (IE8,7 requires respond.js polyfill https://github.com/scottjehl/Respond) | |
$breakpoint-alpha: 480px; // adjust to your needs | |
.rwd-table { | |
margin: 1em 0; | |
min-width: 300px; // adjust to your needs | |
tr { | |
border-top: 1px solid #ddd; | |
border-bottom: 1px solid #ddd; | |
} | |
th { | |
display: none; // for accessibility, use a visually hidden method here instead! Thanks, reddit! | |
} | |
td { | |
display: block; | |
&:first-child { | |
padding-top: .5em; | |
} | |
&:last-child { | |
padding-bottom: .5em; | |
} | |
&:before { | |
content: attr(data-th)": "; // who knew you could do this? The internet, that's who. | |
font-weight: bold; | |
// optional stuff to make it look nicer | |
width: 6.5em; // magic number :( adjust according to your own content | |
display: inline-block; | |
// end options | |
@media (min-width: $breakpoint-alpha) { | |
display: none; | |
} | |
} | |
} | |
th, td { | |
text-align: left; | |
@media (min-width: $breakpoint-alpha) { | |
display: table-cell; | |
padding: .25em .5em; | |
&:first-child { | |
padding-left: 0; | |
} | |
&:last-child { | |
padding-right: 0; | |
} | |
} | |
} | |
} | |
// presentational styling | |
@import 'http://fonts.googleapis.com/css?family=Montserrat:300,400,700'; | |
body { | |
padding: 0 2em; | |
font-family: Montserrat, sans-serif; | |
-webkit-font-smoothing: antialiased; | |
text-rendering: optimizeLegibility; | |
color: #444; | |
background: #eee; | |
} | |
h1 { | |
font-weight: normal; | |
letter-spacing: -1px; | |
color: #34495E; | |
} | |
.rwd-table { | |
background: #34495E; | |
color: #fff; | |
border-radius: .4em; | |
overflow: hidden; | |
tr { | |
border-color: lighten(#34495E, 10%); | |
} | |
th, td { | |
margin: .5em 1em; | |
@media (min-width: $breakpoint-alpha) { | |
padding: 1em !important; | |
} | |
} | |
th, td:before { | |
color: #dd5; | |
} | |
} |