-
Scss 기초적인 부분을 기록해두려고 합니다.
우선 주석을 사용해볼게요. Scss 의 주석은 두가지가 있는데 자바스크립트와 마찬가지로
해당하는 줄에 적용하는 주석인 //, 그리고 해당하는 지정영역에 적용하는 주석인 /* */ 이 두 가지가 있습니다.
// 이 주석은 컴파일 후에 사라짐 /* 이 주석은 컴파일 후에도 남아있음 */
여기서 특이점은 // 주석은 컴파일된 css 파일에서 사라진다는 점입니다.
반면에 /* */ 주석은 컴파일돼서 css 파일에 잘 나타나는 모습입니다. 컴파일 된 후에도 남아있어야 할 주석은 /* */으로 해줘야 겠죠??
이어서 기본적인 scss를 쭉 작성한 코드를 올려볼게요 :)
// 이 주석은 컴파일 후에 사라짐 /* 이 주석은 컴파일 후에도 남아있음 */ .link-list { .link-item { // 선택자 중첩(Nesting) .link { display: inline-block; text-align: center; &:hover, &:focus { // 부모요소 선택자 참조 &(Ampersand) color: gold; } &::before, &::after { content: ""; display: block; width: 10px; height: 10px; background-color: blue; } &:hover::before, &:focus::before { background-color: skyblue; } &:hover::after, &:focus::after { background-color: darkblue; } &-block { display: block; } &-flex { display: flex; } &.red { color: red; } } } }
scss는 중첩(Nesting)이 가능한데, 위에서처럼 .link-list 안에서 괄호를 열어가면서 계속 중첩해서 자식 선택자를 쓸 수 있습니다.
여기서 중첩을 사용하면 좋은점은 여기서 만약 HTML에서 link-list 라는 클래스가 link-group 이라는 클래스로 변경이 된다면
실제 css에서는 link-list 부분을 전부 찾아서 일괄 변경을 해줘야하는 번거로움이 있는데
scss에선 중첩을 사용하기 때문에 가장 바깥에 link-list만 link-group으로 변경해주면 css로 컴파일되면서 한번에 다 바뀝니다. :)
그리고 괄호 안에서 부모요소 선택자를 참조할 수 있는 &(Ampersand) 를 볼 수 있는데,
위에 코드에서 &:hover 나 &::before 등으로 .link 괄호 안에서 .link 를 참조해서 사용할 수 있습니다.
아래쪽에 &-block 이나 &-flex 와 같이 저런식으로 응용해서 사용하면 link-block 클래스와 link-flex 클래스에 css를 줄 수 있고,
마찬가지로 &.red 를 사용하면 .link.red, 즉 link 클래스와 red 클래스를 둘 다 가지고 있는 선택자를 선택할 수 있습니다.
아래는 이렇게 해서 컴파일된 css 파일입니다.
@charset "UTF-8"; /* 이 주석은 컴파일 후에도 남아있음 */ .link-list .link-item .link { display: inline-block; text-align: center; } .link-list .link-item .link:hover, .link-list .link-item .link:focus { color: gold; } .link-list .link-item .link::before, .link-list .link-item .link::after { content: ""; display: block; width: 10px; height: 10px; background-color: blue; } .link-list .link-item .link:hover::before, .link-list .link-item .link:focus::before { background-color: skyblue; } .link-list .link-item .link:hover::after, .link-list .link-item .link:focus::after { background-color: darkblue; } .link-list .link-item .link-block { display: block; } .link-list .link-item .link-flex { display: flex; } .link-list .link-item .link.red { color: red; }
추가로 접두어(Prefix) 와 @at-root 의 사용법도 알아볼게요.
.link-list { font: { /* 접두어(Prefix) - 공통 접두어 부분 합쳐 사용하기 */ size: 18px; weight: bold; } .link-item { color: red; @at-root .link { /* @at-root 부모 선택자 중첩 나가기 (중첩 안에서 사용하면서 중첩 바깥으로 빼기) */ display: block; } } }
이런식으로 font-size와 font-weight에 공통으로 들어가는 접두어 font를 이용해서 저런식으로 작성해줄 수 있습니다.
@at-root의 경우는 중첩 안에서 사용하면서 중첩 바깥으로 빼는 경우에 사용하는데 아래 컴파일된 모습처럼 @at-root .link를 선택해준 부분은 .link 로 컴파일된걸 볼 수 있습니다.
.link-list { font-size: 18px; font-weight: bold; } .link-list .link-item { color: red; } .link { display: block; }
'코딩 기록 > Sass [SCSS]' 카테고리의 다른 글
Sass[SCSS] 기초 이론 5 - 그룹 선언하기, 사용하기, 선택자 속성 사용 (@mixin, @include, @extend) (0) 2023.02.12 Sass[SCSS] 기초 이론 4 - scss에서 연산자 사용하기 (Operations & calc) (0) 2023.02.05 Sass[SCSS] 기초 이론 3 - @import 를 사용해서 다른 scss 파일 불러오기 (파일 분할 Partial) (0) 2023.02.05 Sass[SCSS] 기초 이론 2 - 변수(Variables) 알아보기 & 사용하기 (전역변수, 지역변수, 재할당 등) (0) 2023.02.02 Sass[SCSS] 시작하기 (확장 설치, 초기 세팅) (2) 2023.01.31 댓글