LESS extend功能异常,无法实现类继承效果求助
LESS继承问题解决方案
嘿,我来帮你搞定这个LESS继承的小问题~
首先得告诉你:你的代码逻辑其实是完全正确的,按道理编译后应该就是你期望的输出。你说单个继承都无法实现,大概率是编译环境的问题,比如用了太旧的LESS版本,或者编译工具没正确配置。
先给你确认下:你的这段LESS代码
.header{ .newHeader{ &:extend(.newColor); } .secondHeader{ &:extend(.newColor); } } .newColor{ color: black; }
用LESS 3.x及以上版本编译后,得到的CSS就是你想要的:
.newColor, .header .newHeader, .header .secondHeader{ color: black; }
如果你的编译结果不对,可以试试这几个方法:
- 升级LESS版本:旧版本(比如2.x之前)对嵌套内的
&:extend支持有局限,建议更新到最新稳定版。 - 换一种等价的写法:把extend直接写在选择器后面,效果完全一样,可能某些旧工具对这种写法兼容性更好:
.header{ .newHeader:extend(.newColor){} .secondHeader:extend(.newColor){} } .newColor{ color: black; } - 用标准编译方式:比如用官方的
lessc命令行工具编译,执行命令:lessc 你的文件.less 输出文件.css,这样能确保编译过程没问题。
简单说下原理:LESS的extend就是把被继承的选择器和当前选择器合并成同一个规则块,所以你的写法完全符合这个逻辑,只要编译环境没问题,就能得到期望的结果啦。
内容的提问来源于stack exchange,提问作者Keith
相关产品推荐
相关产品推荐

