如何使用CSS以自定义格式显示表格?

问题描述:

enter image description here如何使用CSS以自定义格式显示表格?

我想制作一个由默认格式的RAILS自动生成的表格,以我希望使用CSS的方式查找。

I.e.如果您查看了图像,我希望第三列显示为一行。这是可能的通过CSS?

+1

目前,没有'colspan'(或'rowspan')CSS等同。 –

+1

不是没有JavaScript。而且,我必须补充一点,我认为'table'实质上是一个个人详细信息列表的错误工具... –

+0

David,我是否应该使用java脚本或CSS编辑解决方案的帖子?你能建议我任何关键字来寻找这样的要求吗? 谢谢 –

使用JavaScript,restyling你的表很容易。我们假设你的表格被称为your-table。选择您的表格,并将最后一个单元格移到新创建的行中,然后将该行插入当前行之后。

因为您要向表中添加行,请确保您从表的末尾开始。如果你使用for(var i=0; i<rows.length; i++),你的页面将会陷入无限循环。

小提琴:http://jsfiddle.net/QP8ga/

function refactorTable(table){ 
    var rows = table.rows; 
    for(var i=rows.length-1; i>=0; i--){ 
     var tr = document.createElement("tr"); 
     var td = rows[i].cells[2]; 
     td.colSpan = "2"; 
     tr.appendChild(td); 
     rows[i].parentNode.insertBefore(tr, rows[i].nextSibling) 
    } 
} 
window.onload = function(){ 
    var table_IDs = ["your-table", "another-table"]; 
    for(var i=0; i<table_IDs.length; i++) refactorTable(table_IDs[i]); 
} 

前面的代码被修改以支持多个表。小提琴用一张桌子显示基本的例子。

作为一项学术活动,这里是一个纯粹的CSS解决方案。不幸的是,它只能在支持现代CSS的浏览器中工作。没有IE支持。

th { 
    display:none; 
} 

table, tbody, tr, td { 
    display:block; 
    -moz-box-sizing:border-box; 
    -webkit-box-sizing:border-box; 
    box-sizing:border-box; 
    border : 0px solid black; 
} 

table { 
    border-width : 1px 1px 0px; 
} 

td:nth-child(1) { 
    width :50%; 
    float:left; 
} 

td:nth-child(2) { 
    width :50%; 
    float:left; 
    border-left-width: 1px; 
} 

td:nth-child(3) { 
    clear:both; 
    border-width: 1px 0px; 
} 

http://jsfiddle.net/FjBdL/5/

+0

尼斯解决方案。这种方法唯一的缺点是表格元素不再支持'vertical-align',因为你已经为表格元素添加了'display:block'。 –

+0

看起来不错,但是,当我增加另一个表的列数时,它看起来很乱,我尝试添加2个td和n-child(4),第n个孩子(5)。但是不起作用。任何快速修复做到这一点? –

+0

@Vivek - 原则应该可以扩展到更多列。你希望第4列和第5列出现在你的布局上? – Alohci