Less中的&符和double and符有什么区别?

时间:2019-03-04 17:34:01

标签: css reactjs less

我正在尝试在React的上下文中写Less。

以下代码有效:

.rt-tr-group .rt-tr:hover .rt-td {
    color: #fff;

    &:first-child { /* notice single ampersand */
        border-left: 2px solid #007aff;
    }
}

此代码也适用:

.rt-tr-group .rt-tr:hover .rt-td {
    color: #fff;
}
.rt-tr-group .rt-tr:hover .rt-td:first-child {
    border-left: 2px solid #007aff;
}

但是,以下代码不起作用:

.rt-tr-group .rt-tr:hover .rt-td {
    color: #fff;

    &&:first-child { /* notice double ampersand */
        border-left: 2px solid #007aff;
    }
}

我已经在代码库的其他地方看到了双与号,所以&&做一些事情。有人可以向我解释一下吗?

3 个答案:

答案 0 :(得分:2)

您所见过的双“&”号可能是& + && ~ &,而不是&&,据我所知后者在Sass中没有任何作用。

使用& + &将使您可以定位同一选择器的相邻同级对象,例如此SCSS:

.btn {
  ...
  & + & {
    margin-left: 15px;
    background: firebrick;
  }
}

...将编译为此CSS:

.btn {
  ...
}
.btn + .btn {
  margin-left: 15px;
  background: firebrick;
}

详细了解双与号here at Team Treehouse

答案 1 :(得分:0)

&&在几乎每种流行的编程语言中对于基本逻辑运算符AND都是多余的,而单个&在SASS中专门用于连接CSS选择器。

连接,或更准确地说,在SASS的用例中:连接选择器与在逻辑上组合两个条件非常不同。

进一步阅读: https://www.sitepoint.com/sass-basics-operators/https://javascript.info/logical-operators

答案 2 :(得分:0)

可能是为了提高特异性:.thing.thing比仅仅.thing