你的第一个案例...
.icon-extended:before:extend(.icon-caret-n:before) {}
...您正在扩展具有类本身命名的东西,.icon-extended
以便该类也匹配选择器[class^="icon-"]
, [class*=" icon-"]
,因此它为什么起作用(在这种情况下它与 无关:extend
)。
你的第二个案例...
ul.checked li:before:extend(.icon-ok:before) {color: #4fa33b;}
...您正在扩展的东西没有icon-
在其选择器中注明的 a 值,ul.checked li
因此不会也不应该匹配。现在您的扩展不会更改类名,而只是将选择器添加到代码块定义(并且仅该代码块)。LESS 扩展纯粹是查看选择器字符串,而不是“智能”地知道这样的选择器将匹配其他选择器字符串(这基本上是 7-phases-max 的评论的内容)。所以你必须明确地这样做,最好是这样:[class^="icon-"]
[class*=" icon-"]
.icon-ok:before
.icon-ok:before
[class^="icon-"]
[class*=" icon-"]
ul.checked li:before:extend(
.icon-ok:before,
[class^="icon-"]:before,
[class*=" icon-"]:before) {
color: #4fa33b;
}