Таблица HTML с вертикальными рядами
Как создать вертикальные таблицы в HTML? По вертикали я имею в виду, что строки будут вертикальными с заголовками таблицы слева.
![enter image description here]()
Мне также нужен он так, чтобы я мог обращаться к этим строкам (в данном случае по вертикали), как в обычной таблице, с <tr>
. Это потому, что я динамически получаю данные для одной строки (например, для строки А) и вставляю ее в таблицу. Я использую angularJS, чтобы избежать манипуляций с DOM, поэтому я не ищу сложные DOM-манипуляции с Javascript.
Ответы
Ответ 1
Вы можете использовать <th>
как первую ячейку в строке.
Здесь скрипка: http://jsfiddle.net/w5nWG/
@vishesh, поэтому вы хотите перенести таблицу после DOM? попробуйте http://gist.github.com/pgaertig/2376975
$(function() {
var t = $('#thetable tbody').eq(0);
var r = t.find('tr');
var cols= r.length;
var rows= r.eq(0).find('td').length;
var cell, next, tem, i = 0;
var tb= $('<tbody></tbody>');
while(i<rows){
cell= 0;
tem= $('<tr></tr>');
while(cell<cols){
next= r.eq(cell++).find('td').eq(0);
tem.append(next);
}
tb.append(tem);
++i;
}
$('#thetable').append(tb);
$('#thetable').show();
}
Ответ 2
Если вы хотите, чтобы <tr>
отображал столбцы, а не строки, попробуйте этот простой CSS
tr { display: block; float: left; }
th, td { display: block; }
Это должно отображать то, что вы хотите, насколько вы работаете с однострочными ячейками (поведение таблицы отбрасывается), см. скрипку.
Ответ 3
Дэвид Бушелл предоставил решение и реализацию здесь: http://dbushell.com/demos/tables/rt_05-01-12.html
Хитрость заключается в использовании display: inline-block;
в строках таблицы и white-space: nowrap;
на теле таблицы.
Ответ 4
AFAIK, нет волшебного решения, чтобы переключить это вокруг.
Что касается поворота (90deg), это, скорее всего, повернет всю таблицу в сторону, подобно тому, как будет выглядеть лист бумаги, если вы повернете на 90 градусов, и это не то, что вы хотите (я думаю?).
Если это возможно (и реалистично), я бы предложил изменить его в самом HTML.
Как указано в комментариях, здесь нет никаких предложений, поэтому здесь приведена базовая альтернатива JavaScript (даже если это не то, что вы искали) с помощью jQuery. Не зная своего опыта, я потратил время, чтобы прокомментировать все, чтобы убедиться, что вы получаете то, что делает код.
// Change the selector to suit your needs
$('table').each(function(){
var table = $(this), // Reference each table in the page
header = $('thead', table), // Reference the table head
headings = []; // Set an array for each column
// If the table doesn't have a header, use it footer for column titles
if(!header.length)
header = $('tfoot', table);
// If there no header nor footer, skip to the next table
if(!header.length)
continue;
// Loop each heading to get the header value
$('th', header).each(function(){
var heading = $(this).html(); // Each heading value content, including any HTML; use .text() to use the text only
headings.push(heading); // Add heading value to array
});
// Make sure the content is wrapped in a tbody element for proper syntax
if(!$('tbody', table).length)
table.wrapInner('<tbody></tbody>');
// Set counter to reference the heading in the headings array
var x = 0;
// Loop through each row in the table
$('tbody tr').each(function(){
var row = $(this),
label = headings[x];
// Add the heading to the row, as a <th> for visual cues (default: bold)
row.prepend('<th>'+label+'</th>')
// Move to the next value in the headings value
x++;
});
});
Ответ 5
<table>
<tr><td>1</td></tr>
<tr><td>2</td></tr>
<tr><td>3</td></tr>
</table>
table { border-collapse: collapse; }
table tr { display: block; float: left; }
table tr tr{ display: block; float: left; }
table th, table td { display: block; border: none; }
Ответ 6
Вы можете использовать css-преобразования, чтобы сначала преобразовать таблицу на 90 градусов, а затем повернуть текст в каждой ячейке на 90 градусов.
table {
position: absolute;
/* Webkit */
-webkit-transform: rotate(90deg);
/* Firefox */
-moz-transform: rotate(90deg);
/* IE */
-ms-transform: rotate(90deg);
/* Opera */
-o-transform: rotate(90deg);
top: 100px; /* adjust as per your need */
}
table > tr > td > span.table-text {
-webkit-transform: rotate(-90deg);
}
Я его не тестировал. Просто идея.
Ответ 7
попробуйте это
<table>
<thead>
<tr>
<th>id</th>
<th>column1</th>
<th>column2</th>
<th>column3</th>
<th>column4</th>
<th>column5</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>2</td>
</tr>
</tbody>
</table>
CSS
table, td, th {
border: 1px solid red;
}
thead {
float: left;
}
thead th {
display: block;
background: yellow;
}
tbody {
float: right;
}
Ответ 8
Возможно, эта ссылка не поможет: повернуть таблицу на 90 градусов
ни один из них: http://www.w3.org/TR/html401/struct/tables.html
В противном случае вы можете попробовать это, предложил другой пользователь (отклонено и опущено):
table {
-webkit-transform: rotate(-90deg);
-moz-transform: rotate(-90deg);
-ms-transform: rotate(-90deg);
-o-transform: rotate(-90deg);
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
}
Это звучит глупо, но эй, это не хуже, чем просто не знать модель таблицы "verry basic" HTML 4.