1

我试图减少学习以减少重复 css 的痛苦。让我感到困惑的一件事是 less 中命名空间的语法。据我了解,less 与 css 兼容,因此

#myelement-id{} 

是一个 id 选择器。另一方面,less 通过指定来支持命名空间

#namespace{}

那么,当我读取一个 less 文件时,我如何知道哪个“#”用于 id 选择器,哪个用于命名空间?

谢谢你的帮助。

4

2 回答 2

5

没有区别。A #idor.class可以用作命名空间调用以访问其其他类或 mixin。为了让它与众不同,你需要把它变成一个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;
}
于 2013-11-10T04:32:15.840 回答
1

此外,甚至在 mixin 和命名空间之间也没有区别。命名空间也可以是参数的(尽管参数命名空间有一些不寻常的属性/副作用,使它们与非参数命名空间不同)。参见例如#1205#1316#1525

基本上,LESS 命名空间就是包含另一个规则集的任何规则集。它更像是一个逻辑概念/约定,而不是语言结构。

于 2013-11-10T04:37:12.373 回答