id选择器和命名空间的差异在less

时间:2013-11-10 03:39:20

标签: css less

我正在努力学习减少重复性CSS的痛苦。令我困惑的一件事是命名空间的语法更少。根据我的理解,较少与css兼容,因此

#myelement-id{} 

是一个id选择器。另一方面,通过指定

,较少支持命名空间
#namespace{}

所以,当我读一个较少的文件时,如何判断哪个“#”用于id选择器,哪个用于命名空间?

感谢您的帮助。

2 个答案:

答案 0 :(得分:5)

没有区别。 #id.class可用作命名空间调用以访问其他类或mixin。为了使它与众不同,你需要把它变成混合物。所以这些都是有效的:

#namespace {
  .test {
    prop: 1;
  }
}

#namespace() {
  .test {
    prop: 1;
  }
}

第一个将产生css输出作为id选择器,第二个不会。但是任何一个都可以访问嵌套值,因此其中任何一个都可以在选择器块内工作,通过这个来访问.test类:

.class {
  #namespace > .test;
}

但输出会有所不同,首先是:

#namespace .test {
  prop: 1;
}
.class {
  prop: 1;
}

第二个只是:

.class {
  prop: 1;
}

答案 1 :(得分:1)

更重要的是,即使mixin和命名空间之间也没有区别。命名空间也可以是参数化的(尽管参数化命名空间具有一些不寻常的属性/副作用,使它们与非参数命名空间不同)。例如,请参阅#1205#1316#1525

基本上,LESS名称空间只是包含其他规则集的任何规则集。它更像是一个逻辑概念/惯例,而不是语言结构。