front-end/html&css
[CSS/JS] 테이블 행열(가로세로) 위치 바꾸기
MOOB
2020. 4. 19. 01:05
API에서 데이터를 어떻게 주느냐에 따라 테이블 요소의 행과 열을 바꿔야 할 순간이 올지도 모른다. 테이블 행/열을 바꾸는 방법은 다음과 같다.
<table>
<thead>
<tr>
<th>col</th>
<th>col</th>
<th>col</th>
<th>col</th>
</tr>
</thead>
<tbody>
<tr>
<th>row</th>
<td>Dolor</td>
<td>Dolor</td>
<td>Dolor</td>
</tr>
<tr>
<th>row</th>
<td>Dolor</td>
<td>Dolor</td>
<td>Dolor</td>
</tr>
<tr>
<th>row</th>
<td>Dolor</td>
<td>Dolor</td>
<td>Dolor</td>
</tr>
</tbody>
</table>
table{
display:flex;
display: -webkit-box;
display: -ms-flexbox;
overflow-x: auto;
overflow-y: hidden;
}
tbody
{display:flex}
th,td{display:block}
thead와 tbody를 포기한다면 css를 요렇게만 사용하면 된다.
<table>
<tr>
<th>col</th>
<th>col</th>
<th>col</th>
<th>col</th>
</tr>
<tr>
<th>row</th>
<td>Dolor</td>
<td>Dolor</td>
<td>Dolor</td>
</tr>
<tr>
<th>row</th>
<td>Dolor</td>
<td>Dolor</td>
<td>Dolor</td>
</tr>
<tr>
<th>row</th>
<td>Dolor</td>
<td>Dolor</td>
<td>Dolor</td>
</tr>
</table>
tr { display: block; float: left; }
th, td { display: block; }
만약 자바스크립트를 사용한다면 이 코드를 응용하면 된다. 하지만 이렇게까지 해야할까?...
function convertTable(tbl) {
var rows = tbl.rows.length;
var cols = tbl.rows[0].cells.length;
var tbl2 = document.createElement('table');
for (var i = 0; i < cols; i++) {
var tr = document.createElement('tr');
for (var j = 0; j < rows; j++) {
var td = document.createElement('td');
var tdih = tbl.rows[j].cells[i].innerHTML;
td.innerHTML = tdih;
tr.appendChild(td);
}
tbl2.appendChild(tr);
}
return tbl2;
}