【发布时间】:2014-03-19 16:58:22
【问题描述】:
用下面两个文件a.less和b.less:
a.less:
.red {
background: red;
}
和b.less:
@import "a.less"
.testA:extend(.red) {
}
.testB {
.red;
}
b.css 的结果是:
.testA {}
.testB {
background: red;
}
为什么扩展不适用于 .testA 的导入 mixin/类定义?扩展语法是否存在要求扩展定义出现在同一文件中的限制,即这是预期的行为吗?
请注意,如果我将 .red mixin 移动到 b.less,.testA 会正确编译。
编辑:我正在使用更少的二进制预编译器,版本 1.6.1
编辑:为了绝对确定拼写错误,并且我认为没有允许更少文件和导入的在线服务,请下载示例源代码 here - 事实上 .testa{} 赢了' 根本不会被渲染,但 b.css 自然定义了一个 .red 类。
编辑:当我从 bash 编译时,扩展工作正常,但使用 less.app GUI 或通过我的 IDE(使用与 bash 相同的命令)或通过 local file watcher 进行编译时,扩展不会正确包含 - 这可能与调用二进制文件的位置有关吗?
【问题讨论】:
-
应该的。您使用哪个 Less 版本进行测试?
-
只是检查,但也许这是一个错字——至少在上面的例子中你使用的是
:extends...它应该是:extend(没有尾随的s)。否则,正如@seven-phases-max 所说,它应该正常工作。 -
@MartinTurjak 仅在问题中输入错误,已修复,但问题仍然存在。
-
正如@seven-phases-max 所问,LESS 是什么版本,是 less.js 还是 php 版本,还是您用来编译的版本?
-
"less.app" 附带不支持
extend的 Less 1.3.3。其余的看起来你有两个不同的lessc版本(1.3.3和1.6.1)从你的控制台/IDE调用...... 1.3.3不会为:extend(...)抛出错误,因为它被视为有效的CSS选择器(但由于规则集为空,因此从输出中删除)。