当我尝试使用指南针编译时,我收到错误说明 “Mixins可能无法在控制指令或其他mixin中定义。”
以下是我正在使用的代码
@mixin fn-menu {
$triangle-height: 8px;
$triangle-width: 16px;
@mixin menu-marker-inner($pos: top) {
$size: 12px;
$offset-height: $triangle-height;
.......
谷歌搜索时,我发现不支持Nested Mixins。不过此网页http://sass-lang.com/documentation/file.SASS_CHANGELOG.html表示
**Smaller Improvements**
Mixins and functions may now be defined in a nested context, for example within @media rules. This also allows files containing them to be imported in such contexts.
我正在执行命令
compile sass --sass-dir sass --force
我该如何解决这个问题?
不幸的是,我无法更改编码风格,因为此代码来自产品。
答案 0 :(得分:0)
您可以在@media
规则中声明mixins和函数,甚至可以在传统的嵌套规则中声明,例如:
.users{
@function user-details-width($slots){
//Some calculation here...
}
@mixin user-details{
//Some syling logic here...
width: user-details-width(3);
}
.details{
@include user-details; //This is totally OK
}
}
a{
@include user-details; //<<<ERROR!!!
}
当你这样做时,你的mixins和函数在该上下文中作用域(并且只在同一级别或下面可见)。
不幸的是,mixins(和函数)不能在其他mixin或函数中定义,甚至不能在控制指令(@for, @if, @while
或@each
)中定义。同样的限制适用于@import指令。您可以在规则中进行导入,但不能使用“if”指令来调整导入,也不能使用任何其他控制指令(或mixins和函数)来调度导入。