Sass .scss : 중첩 및 여러 클래스?
현재 프로젝트에 Sass (.scss)를 사용하고 있습니다.
다음 예 :
HTML
<div class="container desc">
<div class="hello">
Hello World
</div>
</div>
SCSS
.container {
background:red;
color:white;
.hello {
padding-left:50px;
}
}
이것은 잘 작동합니다.
중첩 스타일을 사용하면서 여러 클래스를 처리 할 수 있습니까?
위의 샘플에서 나는 이것에 대해 이야기하고 있습니다 :
CSS
.container.desc {
background:blue;
}
이 경우 모든 div.container
것이 정상적으로 red
되지만 div.container.desc
파란색이됩니다.
container
Sass와 함께 이것을 어떻게 중첩시킬 수 있습니까?
부모 선택기 reference를 사용할 수 있으며 &
컴파일 후 부모 선택기로 대체됩니다.
예를 들어 :
.container {
background:red;
&.desc{
background:blue;
}
}
/* compiles to: */
.container {
background: red;
}
.container.desc {
background: blue;
}
이 &
완전히 해결되므로 부모 선택기가 자체 중첩 된 경우을 교체하기 전에 중첩이 해결됩니다 &
.
이 표기법은 의사 요소 및 클래스 를 작성하는 데 가장 자주 사용됩니다 .
.element{
&:hover{ ... }
&:nth-child(1){ ... }
}
그러나 *&
를 원하는 임의의 위치에 배치 할 수 있으므로 다음도 가능합니다.
.container {
background:red;
#id &{
background:blue;
}
}
/* compiles to: */
.container {
background: red;
}
#id .container {
background: blue;
}
그러나 이렇게하면 중첩 구조가 손상되어 스타일 시트에서 특정 규칙을 찾는 노력이 증가 할 수 있습니다.
* : 앞에 공백 이외의 문자는 사용할 수 없습니다 &
. 당신의 직접 연결 할 수 없도록 selector
+를 &
- #id&
오류가 발생합니다.
이 경우 클래스 이름이나 클래스 이름 규칙을 만드는 더 좋은 방법을 사용해야한다고 생각합니다. 예를 들어, .container
특정 사용법이나 모양에 따라 클래스의 색상이 달라 지길 원한다고 말했듯이 . 당신은 이것을 할 수 있습니다 :
SCSS
.container {
background: red;
&--desc {
background: blue;
}
// or you can do a more specific name
&--blue {
background: blue;
}
&--red {
background: red;
}
}
CSS
.container {
background: red;
}
.container--desc {
background: blue;
}
.container--blue {
background: blue;
}
.container--red {
background: red;
}
위의 코드는 클래스 명명 규칙에서 BEM 방법론을 기반으로합니다. 이 링크를 확인할 수 있습니다. BEM — 블록 요소 수정 자 방법론
참고 URL : https://stackoverflow.com/questions/11084757/sass-scss-nesting-and-multiple-classes
'Programing' 카테고리의 다른 글
C 전 처리기에서 Mac OS X, iOS, Linux, Windows를 안정적으로 감지하는 방법은 무엇입니까? (0) | 2020.03.20 |
---|---|
클래스 멤버 함수 템플릿이 가상 일 수 있습니까? (0) | 2020.03.20 |
Chrome 개발자 도구를 사용하여 iframe 디버깅 (0) | 2020.03.20 |
C ++에서 기본 매개 변수 값을 어디에 두어야합니까? (0) | 2020.03.20 |
DEBUG = False로 설정하면 500 오류가 발생합니다 (0) | 2020.03.20 |