有没有办法确定mixin的位置? IE:
含
@include test();
.test {
@include test();
}
MIXIN
@mixin test(){
@if (weAreNested) {
// We are in a css selector
&.test {}
} @else {
// we are not inside any selector
.test {}
}
}
那么,我们可以使用某种指令来做到这一点吗?
使用&在选择器已经知道我们是否处于基本级别并且不会编译css文件之前,所以我想知道他们是否有办法让我们测试它?
干杯
答案 0 :(得分:1)
我不知道这在技术上是否可行,但我很确定这不是一个好主意。
如果您将mixins视为任何编程语言中的类似函数,您的问题可以被重新描述为“函数可以确定调用它的位置以触发不同的功能”。虽然在许多语言中确实可以实现这一点 - 例如,通过处理当前的“堆栈跟踪” - 将其用于除调试之外的任何其他内容肯定会导致难以维护的代码。
更具体地说,您的示例显示了单个mixin执行两个相当不同的作业:
weAreNested
分支为特定规则集添加一些规则,只要匹配的元素也有一个额外的类else
分支为匹配特定类的所有元素创建全局规则;事实上,这个例子并没有通过mixin获得任何东西,尽管有一个带参数的例子是可能的在我看来,这是一个更好的主意: