Sass和组合子选择器

fra*_*ees 119 css sass css-selectors

我刚刚发现了Sass,我对此非常兴奋.

在我的网站中,我实现了一个树状导航菜单,使用子组合器(E > F)进行样式设置.

有没有办法用Sass中更简单(或更好)的语法重写这段代码?

#foo > ul > li > ul > li > a {
  color: red;
}
Run Code Online (Sandbox Code Playgroud)

Arn*_*anc 213

如果没有组合子选择器,您可能会执行与此类似的操作:

foo {
  bar {
    baz {
      color: red;
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

如果你想重现相同的语法>,你可以这样:

foo {
  > bar {
    > baz {
      color: red;
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

这编译成:

foo > bar > baz {
  color: red;
}
Run Code Online (Sandbox Code Playgroud)

或者在sass中:

foo
  > bar
    > baz
      color: red
Run Code Online (Sandbox Code Playgroud)

  • 这只是为了延长时间,不是吗? (2认同)

Bol*_*ock 17

对于你所拥有的单一规则,没有任何更短的方法可以做到这一点.儿童组合子在CSS和Sass/SCSS中是相同的,除此之外别无选择.

但是,如果您有多个这样的规则:

#foo > ul > li > ul > li > a:nth-child(3n+1) {
    color: red;
}

#foo > ul > li > ul > li > a:nth-child(3n+2) {
    color: green;
}

#foo > ul > li > ul > li > a:nth-child(3n+3) {
    color: blue;
}
Run Code Online (Sandbox Code Playgroud)

您可以将它们压缩为以下之一:

/* Sass */
#foo > ul > li > ul > li
    > a:nth-child(3n+1)
        color: red
    > a:nth-child(3n+2)
        color: green
    > a:nth-child(3n+3)
        color: blue

/* SCSS */
#foo > ul > li > ul > li {
    > a:nth-child(3n+1) { color: red; }
    > a:nth-child(3n+2) { color: green; }
    > a:nth-child(3n+3) { color: blue; }
}
Run Code Online (Sandbox Code Playgroud)