Sass 및 결합 된 자식 선택기


126

나는 방금 Sass를 발견했고 그것에 대해 너무 흥분했습니다.

내 웹 사이트에서는 자식 결합 자 ( E > F)를 사용하여 스타일이 지정된 트리와 같은 탐색 메뉴를 구현합니다 .

Sass에서 더 간단한 (또는 더 나은) 구문으로이 코드 를 다시 작성할 수 있는 방법 이 있습니까?

#foo > ul > li > ul > li > a {
  color: red;
}

나는 "간단하게 / 더 나은"OP 수단에 의해 생각 "하는 방식으로 해당 계층을 나타 내기 위해 공백 사용"
jsejcksn

답변:


223

결합 된 자식 선택기가 없으면 다음과 비슷한 작업을 수행 할 수 있습니다.

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

를 사용하여 동일한 구문을 재현하려면 >다음을 수행 할 수 있습니다.

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

이것은 다음과 같이 컴파일됩니다.

foo > bar > baz {
  color: red;
}

또는 sass에서 :

foo
  > bar
    > baz
      color: red

2
이건 그냥 길어질거야, 안 그래?
BoltClock

1
이 생각 나는 영업 이익이 원하는 무엇
아르노 르 블랑

1
좋아, 고마워. BoltClock이 말했듯이 btw는 더 길고 (어쨌든 나에게는 더 추합니다). 예전 스타일링을 유지해야 할 것 같습니다.
frarees 2011 년

1
당신은 "더 좋은 구문을"정의해야합니다)
아르노 르 블랑

19

여러분이 가지고있는 단일 규칙에 대해 더 짧은 방법은 없습니다. 자식 결합자는 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;
}

다음 중 하나로 압축 할 수 있습니다.

/* 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; }
}

결합 된 자식 선택자에 대한 변환이 없습니다 ... 대안이 있을까요?
frarees 2011 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.