【发布时间】:2018-03-24 23:38:12
【问题描述】:
我正在创建一个显示帐户交易的视图,并且我想对交易类型/状态进行颜色编码。我还想展示一个解释颜色代码的图例。
我想要一个结构如下的最终结果:
HTML
<table id="transactions">
<thead>
<tr>
<th colspan="2">
Transactions
</th>
</tr>
</thead>
<tbody>
<tr class="credit">
<td>A credit</td>
<td>$1.00</td>
</tr>
<tr class="debit paid">
<td>A paid debit</td>
<td>($2.00)</td>
</tr>
<tr class="debit unpaid">
<td>An unpaid debit</td>
<td>($3.00)</td>
</tr>
</tbody>
</table>
<hr/>
<table id="legend">
<thead>
<tr>
<th colspan="3">
Legend
</th>
</tr>
</thead>
<tbody>
<tr>
<td class="credit">Credit</td>
<td class="debit paid">Paid</td>
<td class="debit unpaid">Unpaid</td>
</tr>
</tbody>
</table>
CSS
table#transactions > tbody > tr.credit {
color: limegreen;
}
table#legend > tbody > tr > td.credit {
color: limegreen;
}
table#transactions > tbody > tr.debit.paid {
color: goldenrod;
}
table#legend > tbody > tr > td.debit.paid {
color: goldenrod;
}
table#transactions > tbody > tr.debit.unpaid {
color: crimson;
}
table#legend > tbody > tr > td.debit.unpaid {
color: crimson;
}
请注意,“借方”使用两个类名,以将它们与贷方区分开来。
显然那里有一些冗余,我试图将其重构为这个(无效的)LESS 代码:
.transaction-status(@class, @color) {
table#transactions > tbody > tr@{class} {
color: @color;
}
table#legend > tbody > tr > td@{class} {
color: @color;
}
}
.transaction-status(.credit, limegreen);
.transaction-status(.debit.paid, goldenrod);
.transaction-status(.debit.unpaid, crimson);
一种可能的解决方法是重新调整事物,使不同的事务类型具有一个唯一的类名,但这感觉就像穿越到 IE6 时代。 IE。我知道,但想避免这个有效的 LESS,它看起来如此接近,但到目前为止:
.transaction-status(@class, @color) {
table#transactions > tbody > tr.@{class} {
color: @color;
}
table#legend > tbody > tr > td.@{class} {
color: @color;
}
}
.transaction-status(credit, limegreen);
.transaction-status(debit-paid, goldenrod);
.transaction-status(debit-unpaid, crimson);
我尝试引用类名,但即使这使第一个 LESS 示例编译,引号也会传递给输出 CSS。那么,有没有办法将“标识符”以外的东西作为参数传递给 LESS mixin,并让它在选择器插值中正确工作?
【问题讨论】:
-
为什么不能使用
.在选择器中的那个而不是参数? -
为了防止这种特殊情况,也可以使用
appended parent selector技巧,尽管这种方法有其缺点,而且并不总是很好闻。 -
顺便说一句。我总是想知道为什么每个人都更喜欢
table#legend > tbody > tr > td.debit.unpaid而不是table .debit.unpaid(你没有其他表格,这些单元格颜色相反,是吗?)。 -
@seven-phases-max:其实我觉得追加父选择器的方式也很好。
-
@seven-phases-max 可能只有我戴着眼罩。我有一些其他可重用(OOCSS-ish)的表格样式需要如此精确,所以这种方法在我的脑海中被烧毁了。感谢您的建议,我不知道
&是这样工作的。
标签: html css less less-mixins