Css 更少的名称空间和其他选择器

Css 更少的名称空间和其他选择器,css,less,Css,Less,如何使用伪选择器引用命名空间类 #Namespace{ .class:focus{ prop: value; } .class + .class{ prop: value; } } .anotherClass{ #Namespace.class:focus(); //this does not work #Namespace.class:focus; //not working #Namespace >

如何使用伪选择器引用命名空间类

#Namespace{
    .class:focus{
        prop: value;
    }
    .class + .class{
        prop: value;
    }
}

.anotherClass{
    #Namespace.class:focus(); //this does not work
    #Namespace.class:focus; //not working
    #Namespace > .class:focus(); //this does not work
    #Namespace > .class:focus; //not working
    #Namespace > .class + .class; //not working either
}
#伪选择器: 简言之:你不能。只有
id
class
(即分别为
)选择器可以用作混音器。不能使用伪选择器和标记选择器。看

如果计划重用某些样式,只需将其定义为(参数化)混合:

#.类别+.类别:
#Namespace>.class+.class//也不工作

部分原因在于上述原因(即并非每个选择器都可以用作mixin),但在这种特定情况下,您实际上仍然可以访问该选择器组合。尽管调用带名称空间的mixin的唯一语法是:
#namespace>.mixin
,但非正式地说:“combinator”(例如
+
~
,空格等)在编译器匹配mixin调用的选择器时基本上被忽略,因此:

#namespace {
    .class + .class {
        prop: value;
    }
}

.anotherClass {
    #namespace > .class > .class; // OK
    #namespace .class .class;     // OK
    #namespace.class.class;       // OK
    #namespace.class > .class;    // OK
    // etc.
}
另见

#namespace {
    .class + .class {
        prop: value;
    }
}

.anotherClass {
    #namespace > .class > .class; // OK
    #namespace .class .class;     // OK
    #namespace.class.class;       // OK
    #namespace.class > .class;    // OK
    // etc.
}