Sass i łączony selektor dla dzieci

Właśnie odkryłem Sass, i byłem tak bardzo podekscytowany tym.

Nawiasem mówiąc, w mojej witrynie zaimplementowałem drzewiaste menu nawigacyjne, stylizowane na combined child selector (E > F).

Czy Jest jakiś sposób naprzepisanie tego kodu na prostszą (lub lepszą) składnię w Sass?

#foo > ul > li > ul > li > a {
  color: red;
}
Author: BoltClock, 2011-09-08

2 answers

Bez łączonego selektora Potomków prawdopodobnie zrobiłbyś coś podobnego:

foo {
  bar {
    baz {
      color: red;
    }
  }
}

Jeśli chcesz odtworzyć tę samą składnię za pomocą >, możesz to zrobić:

foo {
  > bar {
    > baz {
      color: red;
    }
  }
}

To zestawia się z tym:

foo > bar > baz {
  color: red;
}

Lub w sass:

foo
  > bar
    > baz
      color: red
 185
Author: arnaud576875,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-30 22:58:27

Dla tej jedynej zasady, którą masz, nie ma krótszego sposobu, aby to zrobić. Kombinator potomny jest taki sam w CSS i w Sass/SCSS i nie ma dla niego alternatywy.

Jednakże, jeśli masz wiele takich zasad:

#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;
}

Można je skondensować do jednego z następujących:

/* 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; }
}
 14
Author: BoltClock,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-09-08 09:29:06