我想知道是否可以只使用CSS来重新排列HTML表格单元格。
比如说这个
------------------------------------------------
| A | B | C |
------------------------------------------------
显示为:
------------------------------------------------
| C | A | B |
------------------------------------------------
或者是这样的:
-------------------------
| A |
-------------------------
| B | C |
-------------------------
这是否仅适用于CSS,或者是否需要修改HTML节点?
**编辑:**你们中的一些人想知道为什么需要这样做,下面是我面临的现实问题:
我想显示用户报告的问题列表:
------------------------------------------------------------------------------
| Problem description (A) | Reporting user (B) | Link to affected entity (C) |
------------------------------------------------------------------------------
我想评估各种布局。第一个布局变体将强调报告用户,第二个将强调文本描述。
我对改变结构没有任何问题,事实上我已经这么做了,但是当我编写这个代码的时候,我想知道是否可以用CSS来做。
5条答案
按热度按时间j0pj023g1#
你可以,但这不是最好的做法(见其他答案)。
下面是我的例子:
View on JSFiddle
toe950272#
目前在CSS中没有这样的特性。
CSS3将以这样或那样的形式提供flexbox model(目前W3C正在积极开发它),它应该允许你做你想做的事情。
omvjsjqw3#
十多年后,我们可以使用现代CSS一起破解一个解决方案。
一开始我考虑使用grid,但我认为这不适合这种情况,因此我将使用嵌套的flexboxes来破解这个表。
让我们先看看表的DOM树:
thead
和tfoot
内部的结构与tbody
相同。我们将用3层嵌套的弹性框布局替换表格布局:
table
元素。这通常具有一个子代(仅tbody
),但有时具有两个或三个子代(除tbody
外,还有thead
和tfoot
),甚至更多子代(允许多个连续的tbody
元素)。查看这段代码(并运行代码段以查看结果)。
x一个一个一个一个x一个一个二个x
这个答案是为了教育价值而作的简短回答,下面的问题留给读者作为练习:
tfoot
应该出现在tbody
之前,但是浏览器应该在所有tbody
元素之后显示它。这可以通过使用order
属性在这个flexbox中被破解。colspan
的单元格将带来一些挑战,但通过添加一些CSS规则可能可以解决这些问题。rowspan
的单元格肯定会破坏布局。如果不对HTML进行额外的更改,将很难修复它。<caption>
在此代码中未实现,但可能很容易得到支持。<colgroup>
、<col>
元素。bqujaahr4#
你可以用一种肮脏的方式来做,你可以一直尝试使用浮动功能。
但对于最后的设计,你提供了一个例子,我认为你应该能够发挥左右的宽度(顶部一个应该是宽度:100%;另外2个应为50%)
y53ybaqx5#
您可以使用适当的标记(尽管添加了标记)和css.http://jsfiddle.net/jalbertbowdenii/xvBhF/来完成所有这三项操作
公正的警告:我不确定at的处理表格数据的能力有多强,我只想说他们没有,但是不管怎样,如果你要上市,你可能会想看看这个。我相信有一种方法可以处理所有的html属性风格,只在表格样式中出现。