区分LESS和SASS / SCSS使用&>作为基本选择器

时间:2014-03-27 16:49:37

标签: css3 sass less

我实际上正在研究一种LESS到SCSS转换器。实际上我从来没有真正使用过LESS而是SCSS。触发完成了基本的差异和测试我来了几个reg-ex替换。 无论如何,有一个我无法触发的语法结构。在LESS你可以这样写:

.no-border &>table, 
.no-border .table-wrapper table {
   border:none !important;
}

无论如何只是编译为:

.no-border > table,
.no-border .table-wrapper table {
  border: none !important;
}

(基本上只剥离& -parent运算符?)

无论如何,SASS / SCSS不允许这种结构。而且说实话,没有任何意义的选择器,字面意思是“同一个父母,但直接的孩子"或者我在这里想念什么?

也许有人在LESS中如何使用它可以解释构造对什么有用?

在我的转换器中,我刚刚更换了"&>"用(普通)">"。这样好吗?

1 个答案:

答案 0 :(得分:1)

这里的上下文是Everything

我不能说这是"罚款"替换它,因为它取决于它所在的背景。作为一个非孩子,你是正确的,它编译你所注意到的和你的解决方案"很好。但是如果该代码在LESS中并且在具有父选择器的上下文中使用(或导入),则像这样的示例:

.parent {
   .no-border &>table, 
   .no-border .table-wrapper table {
     border:none !important;
   } 
}

然后保持它有一个主要的区别(和需要),因为它产生了这个:

.no-border .parent > table,
.parent .no-border .table-wrapper table {
  border: none !important;
}

我会假设有人按照他们的方式对其进行编码,以允许.no-border成为.parent的父级或.parent的子级,这可能具有一定的特异性目的(否则人们会认为.no-border table只会有效。)

无论如何,如果你正在处理转换器"那么我认为你会想要以某种方式处理这种转换,以便在SCSS中获得与LESS相同的输出结果(否则你最终得到一个"错误的"转换器)。