经过一番挖掘后,我发现this是我需要为桌子设置圆角的最佳回应。
这引导我看到以下CSS片段:
.greytable tr:first-child th:first-child {
-moz-border-radius-topleft: 5px;
-webkit-border-top-left-radius: 5px;
border-top-left-radius: 5px;
}
.greytable tr:first-child th:last-child {
-moz-border-radius-topright: 5px;
-webkit-border-top-right-radius: 5px;
border-top-right-radius: 5px;
}
.greytable tr:last-child td:first-child {
-moz-border-radius-bottomleft: 5px;
-webkit-border-bottom-left-radius: 5px;
border-bottom-left-radius: 5px;
}
.greytable tr:last-child td:last-child {
-moz-border-radius-bottomright: 5px;
-webkit-border-bottom-right-radius: 5px;
border-bottom-right-radius: 5px;
}
现在我想知道如何用LESS简化所有这些。我尝试了以下LESS代码:
.border-radius (@v, @h, @radius: 5px) {
-moz-border-radius-@v@h: @radius;
-webkit-border-@v-@h: @radius;
border-@v-@h: @radius;
}
然后调用它(左上角):
.greytable tr:first-child th:first-child {
.border-radius('top', 'left')
}
但它不起作用(LESS片段第二行的错误)。
提前致谢!
答案 0 :(得分:7)
您可能需要使用字符串插值语法,请尝试:
.border-radius (@v, @h, @radius: 5px) {
-moz-border-radius-@{v}@{h}: @radius;
-webkit-border-@{v}-@{h}-radius: @radius;
border-@{v}-@{h}-radius: @radius;
}
我还要补充一点,webkit和mozilla在很大程度上符合标准border-radius
属性,并且供应商前缀已经过时了。
编辑:似乎字符串插值不适用于此任务(上面的代码无法编译),所以这里的解决方法mixin实际上更容易使用:
.rounded-table(@radius) {
tr:first-child th:first-child {
-moz-border-radius-topleft: @radius;
-webkit-border-top-left-radius: @radius;
border-top-left-radius: @radius;
}
tr:first-child th:last-child {
-moz-border-radius-topright: @radius;
-webkit-border-top-right-radius: @radius;
border-top-right-radius: @radius;
}
tr:last-child td:first-child {
-moz-border-radius-bottomleft: @radius;
-webkit-border-bottom-left-radius: @radius;
border-bottom-left-radius: @radius;
}
tr:last-child td:last-child {
-moz-border-radius-bottomright: @radius;
-webkit-border-bottom-right-radius: @radius;
border-bottom-right-radius: @radius;
}
}
用法:
.greytable {
.rounded-table(10px)
}
输出:
.greytable tr:first-child th:first-child {
-moz-border-radius-topleft: 10px;
-webkit-border-top-left-radius: 10px;
border-top-left-radius: 10px;
}
.greytable tr:first-child th:last-child {
-moz-border-radius-topright: 10px;
-webkit-border-top-right-radius: 10px;
border-top-right-radius: 10px;
}
.greytable tr:last-child td:first-child {
-moz-border-radius-bottomleft: 10px;
-webkit-border-bottom-left-radius: 10px;
border-bottom-left-radius: 10px;
}
.greytable tr:last-child td:last-child {
-moz-border-radius-bottomright: 10px;
-webkit-border-bottom-right-radius: 10px;
border-bottom-right-radius: 10px;
}