根据W3 Schools的这篇文章,可以像这样在HTML中创建一个基本表:
<table border="1">
<tr>
<td>row 1, cell 1</td>
<td>row 1, cell 2</td>
</tr>
<tr>
<td>row 2, cell 1</td>
<td>row 2, cell 2</td>
</tr>
</table>
从上面看,似乎按行输入数据。
我有一种情况需要按列输入所有数据。这样的事情可能吗?
<table border="1">
<tc>
<td>row 1, cell 1</td>
<td>row 2, cell 1</td>
</tc>
<tc>
<td>row 1, cell 2</td>
<td>row 2, cell 2</td>
</tc>
</table>
答案 0 :(得分:19)
您可以使用表格中的表格在列中呈现表格...
<table>
<tr>
<td>
<table>
<thead>
<tr>
<td>column 1 header 1</td>
</tr>
</thead>
<tbody>
<tr>
<td>column 1 row 1</td>
</tr>
<tr>
<td>column 1 row 2</td>
</tr>
</tbody>
</table>
</td>
<td>
<table>
<thead>
<tr>
<td>column 2 header 1</td>
</tr>
</thead>
<tbody>
<tr>
<td>column 2 row 1</td>
</tr>
<tr>
<td>column 2 row 2</td>
</tr>
</tbody>
</table>
</td>
</tr>
</table>
答案 1 :(得分:17)
你最好的选择是按行渲染表格,然后使用javascript反转表格
以下代码将反转一个表(此示例代码使用jquery)
$("table").each(function() {
var $this = $(this);
var newrows = [];
$this.find("tr").each(function(){
var i = 0;
$(this).find("td").each(function(){
i++;
if(newrows[i] === undefined) { newrows[i] = $(""); }
newrows[i].append($(this));
});
});
$this.find("tr").remove();
$.each(newrows, function(){
$this.append(this);
});
});
更新:
这是一个适用于这些元素的版本: http://jsfiddle.net/zwdLj/
答案 2 :(得分:13)
在现代浏览器中,您可以通过重新定义CSS中的TR和TD标签行为来实现此目的。给定您问题中的HTML,请添加下一个CSS样式:
table {
display: table;
}
table tr {
display: table-cell;
}
table tr td {
display: block;
}
<table border="1">
<tr>
<td>row 1, cell 1</td>
<td>row 2, cell 1</td>
</tr>
<tr>
<td>row 1, cell 2</td>
<td>row 2, cell 2</td>
</tr>
</table>
答案 3 :(得分:0)
通过使用一堆充满lis的uls来做这件事,看起来比我能找到的任何东西都要清洁得多。你必须做一些事情,比如在所有的uls中添加一个类并设置它的样式:inline-table。
@* pseudo html/razor *@
@foreach(var col in columns){
<ul class='tableColumn'>
foreach(var data in col){
<li>data</li>
}
</ul>
}
和一些造型
.tableColumn {
border: 1px solid;
display: inline-table;
}
答案 4 :(得分:0)
您始终可以创建一个父元素(表格),然后在表格内部可以创建宽度受限的嵌入式块元素作为您的列,这样,添加到这些子列的所有内容都将遵循向下模式,然后要制作网格状模式,只需确保设置列中元素的高度即可,例如使用列表显示内容:
<div id="your_table">
<span style="width: 25%" id="fist_column"> <ul></ul></span>
<span style="width: 25%" id="second_column"><ul></ul></span>
<span style="width: 25%" id="third_column"><ul></ul></span>
<span style="width: 25%" id="fourth_column"><ul></ul></span>
</div>
答案 5 :(得分:-1)
我处于相同的情况,我必须按列添加数据。但是,这个问题可以用一种简单的方法解决。我在这个例子中使用了twig,但你很容易理解。
<table>
<tr>
<th>id</th>
<th>title</th>
<th>ISBN</th>
<th>author_id</th>
<th>publisher_id</th>
</tr>
{% for book in books %} //for loop is used before the <tr> tag
<tr>
<td>{{ book.id }}</td>
<td>{{ book.title }}</td>
<td>{{ book.isbn }}</td>
<td>{{ book.publisher.id }}</td>
<td>{{ book.author.id }}</td>
{% endfor %}
</tr>
注意:{{这是要打印的数据}}