Mobile-friendly HTML table. Variant 2
An HTML table with multiple columns and rows is reformatted into two column table to fit the available width. That is, hopefully to fit without horizontal scrolling.
HTML table before reformatting:
01_TH_text | 02_TH_text | 03_TH_text | 04_TH_text | 05_TH_text | 06_TH_text | 07_TH_text | 08_TH_text | 09_TH_text | 10_TH_text |
---|---|---|---|---|---|---|---|---|---|
1_TD_data_01 | 1_TD_data_02 | 1_TD_data_03 | 1_TD_data_04 | 1_TD_data_05 | 1_TD_data_06 | 1_TD_data_07 | 1_TD_data_08 | 1_TD_data_09 | 1_TD_data_10 |
2_TD_data_01 | 2_TD_data_02 | 2_TD_data_03 | 2_TD_data_04 | 2_TD_data_05 | 2_TD_data_06 | 2_TD_data_07 | 2_TD_data_08 | 2_TD_data_09 | 2_TD_data_10 |
3_TD_data_01 | 3_TD_data_02 | 3_TD_data_03 | 3_TD_data_04 | 3_TD_data_05 | 3_TD_data_06 | 3_TD_data_07 | 3_TD_data_08 | 3_TD_data_09 | 3_TD_data_10 |
4_TD_data_01 | 4_TD_data_02 | 4_TD_data_03 | 4_TD_data_04 | 4_TD_data_05 | 4_TD_data_06 | 4_TD_data_07 | 4_TD_data_08 | 4_TD_data_09 | 4_TD_data_10 |
HTML table after reformatting:
01_TH_text | 02_TH_text | 03_TH_text | 04_TH_text | 05_TH_text | 06_TH_text | 07_TH_text | 08_TH_text | 09_TH_text | 10_TH_text |
---|---|---|---|---|---|---|---|---|---|
1_TD_data_01 | 1_TD_data_02 | 1_TD_data_03 | 1_TD_data_04 | 1_TD_data_05 | 1_TD_data_06 | 1_TD_data_07 | 1_TD_data_08 | 1_TD_data_09 | 1_TD_data_10 |
2_TD_data_01 | 2_TD_data_02 | 2_TD_data_03 | 2_TD_data_04 | 2_TD_data_05 | 2_TD_data_06 | 2_TD_data_07 | 2_TD_data_08 | 2_TD_data_09 | 2_TD_data_10 |
3_TD_data_01 | 3_TD_data_02 | 3_TD_data_03 | 3_TD_data_04 | 3_TD_data_05 | 3_TD_data_06 | 3_TD_data_07 | 3_TD_data_08 | 3_TD_data_09 | 3_TD_data_10 |
4_TD_data_01 | 4_TD_data_02 | 4_TD_data_03 | 4_TD_data_04 | 4_TD_data_05 | 4_TD_data_06 | 4_TD_data_07 | 4_TD_data_08 | 4_TD_data_09 | 4_TD_data_10 |
HTML code:
<table>
<tr>
<th>01_TH_text</th>
<th>02_TH_text</th>
<th>03_TH_text</th>
<th>04_TH_text</th>
<th>05_TH_text</th>
<th>06_TH_text</th>
<th>07_TH_text</th>
<th>08_TH_text</th>
<th>09_TH_text</th>
<th>10_TH_text</th>
</tr>
<tr>
<td>1_TD_data_01</td>
<td>1_TD_data_02</td>
<td>1_TD_data_03</td>
<td>1_TD_data_04</td>
<td>1_TD_data_05</td>
<td>1_TD_data_06</td>
<td>1_TD_data_07</td>
<td>1_TD_data_08</td>
<td>1_TD_data_09</td>
<td>1_TD_data_10</td>
</tr>
<tr>
<td>2_TD_data_01</td>
<td>2_TD_data_02</td>
<td>2_TD_data_03</td>
<td>2_TD_data_04</td>
<td>2_TD_data_05</td>
<td>2_TD_data_06</td>
<td>2_TD_data_07</td>
<td>2_TD_data_08</td>
<td>2_TD_data_09</td>
<td>2_TD_data_10</td>
</tr>
<tr>
<td>3_TD_data_01</td>
<td>3_TD_data_02</td>
<td>3_TD_data_03</td>
<td>3_TD_data_04</td>
<td>3_TD_data_05</td>
<td>3_TD_data_06</td>
<td>3_TD_data_07</td>
<td>3_TD_data_08</td>
<td>3_TD_data_09</td>
<td>3_TD_data_10</td>
</tr>
<tr>
<td>4_TD_data_01</td>
<td>4_TD_data_02</td>
<td>4_TD_data_03</td>
<td>4_TD_data_04</td>
<td>4_TD_data_05</td>
<td>4_TD_data_06</td>
<td>4_TD_data_07</td>
<td>4_TD_data_08</td>
<td>4_TD_data_09</td>
<td>4_TD_data_10</td>
</tr>
</table>
CSS code:
/* The principal part of CSS */
table, tbody, tr, th, td {display: block;}
tr:first-of-type {position: absolute; top: -9999px; left: -9999px;}
td:before {content: attr(data-th-name);}
/* Styling the look */
tr{margin-bottom: 40px; border: 2px #000 solid;}
tr:last-of-type{margin-bottom: 0;}
tr:nth-of-type(even){background: #ddd;}
td{padding: 10px; text-align: right; border: 1px #000 solid; border-top: 0;}
td:first-of-type{border-top: 1px #000 solid;}
td:before{font-weight: bold; float: left;}
JavaScript / jQuery code:
jQuery(document).ready(function($) {
$('.example2 table td').each(function(i){
var th_text = $('.example2 table').find('th').eq($(this).index()).text();
$(this).attr('data-th-name', th_text);
});
});
The script gets text content from each <th> tag and creates data-th-name attributes in each corresponding <td> tag with text from the corresponding <th> tag as their content.
Browser support
- Windows
- Internet Explorer 8.0+
- Firefox 1.0+
- Google Chrome
- Opera 7.5+
- Safari 3.1+
- SeaMonkey 1.0+
- Mozilla 1.5+
- Netscape 7.2+
- Linux
- Firefox 1.0+
- Google Chrome / Chromium
- Opera 7.5+
- SeaMonkey 1.0+
- Hv3
- Mozilla 1.5+
- Netscape 7.2+