【发布时间】:2015-03-16 11:39:15
【问题描述】:
我有一个包含报告模块的网络应用程序。报告模块允许用户选择他们想要查看的字段(按名称),并构建一个数据数组,一个小胡子样式的模板处理器将其转换为一个表格,每个字段有 1 列。
服务器上的代码生成数据,包括总计和其他“特殊”行。这些特殊行是通过向行添加一个 css 类来标识的。
我刚刚遇到了对新型“特殊”行的要求,它需要在特定字段下划线。我不希望只为这种类型的行使用特殊的javascript,所以我想知道是否有一种方法可以在样式表中识别一个单元格(给它下划线),只给一个附加到行的类,并且附加到列的 id(或其他标识符)。
我意识到我可以使用 nth-child 来做到这一点,但列是由用户选择的,所以列号不会固定。
只是给你一个想法,我做了一个例子(实际代码要复杂得多,并且使用了很多库函数):
<table>
<thead>
<tr>
{{#each Columns}}<th id={{Id}}>{{Heading}}</th>{{/each}}
</tr>
</thead>
<tbody>
{{#each Rows}}
<tr class="{{Class}}>
{{#each Data}}<td>{{Value}}</td>{{/each}}
</tr>
{{/each}}
</tbody>
</table>
典型数据(列的数量、内容和顺序因用户选择而异):
{
Columns: [
{ Id: "account", Heading: "Account" },
{ Id: "subAccountValueCP", Heading: "" },
{ Id: "valueCP", Heading: "Current Period" },
{ Id: "subAccountValueLP", Heading: "" },
{ Id: "valueLP", Heading: "Prior Period" }
],
Rows: [
{ Class: "heading", Data: [ "Income", "", "", "", "" ] },
{ Class: "normal", Data: [ "Consultancy", "", 5000.00, "", 4500.00 ] },
{ Class: "parent", Data: [ "Other", "", "", "", "" ] },
{ Class: "sub", Data: [ "Postage", "50.00", "", "45.00", "" ] },
{ Class: "sub", Data: [ "Packing", "50.00", "", "45.00", "" ] },
{ Class: "total", Data: [ "Other", "", 100.00, "", 90.00 ] }
]
}
结果表:
<table>
<thead>
<tr>
<th id="account">{{Heading}}</th>
<th id="subAccountValueCP">{{Heading}}</th>
<th id="valueCP">{{Heading}}</th>
<th id="subAccountValueLP">{{Heading}}</th>
<th id="calueLP">{{Heading}}</th>
</tr>
</thead>
<tbody>
<tr class="heading">
<td>Income</td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr class="normal">
<td>Consultancy</td>
<td></td>
<td>5000.00</td>
<td></td>
<td>4500.00</td>
</tr>
<tr class="parent">
<td>Other</td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr class="sub">
<td>Postage</td>
<td>50.00</td>
<td></td>
<td>45.00</td>
<td></td>
</tr>
<tr class="sub">
<td>Packing</td>
<td>50.00</td>
<td></td>
<td>45.00</td>
<td></td>
</tr>
<tr class="total">
<td>Other</td>
<td></td>
<td>100.00</td>
<td></td>
<td>90.00</td>
</tr>
</tbody>
</table>
现在,我想用sub 类为行中的单元格设置样式,用padding-left: 20px; 样式为account 列设置样式。由于列的顺序和内容完全是用户定义的,我知道这样做的唯一方法是在每个单元格上放置一个类,然后在该类上进行选择。但是,我想知道是否有合适的 css 选择器可以选择属于特定列的单元格,而不是按列号,因为这样可以更有效地完成这个技巧。
【问题讨论】:
-
您能否在您的问题中添加示例代码?我认为这就是为什么您仍然没有 cmets/answers 的原因。
-
我认为这是不可能的,只有
nth-child、+和col可用,但是我赞成,也许有人有什么技巧......
标签: css html-table