자유도가 높다 ⇨ 개발자가 지킬 규칙이 많다.
변수, 반복문 등을 사용할 수 있는 대신 규칙이 있다.
브라우저가 읽을 수 있는 확장자 > html css javascript
scss ⇨ css : 컴파일을 위해서 node webpack 필요
vsc 확장 live scss compiler 설치 및 사용
와 watchSass 안나와서 두시간 날림 > 역시 기계는 껏켯 or 삭제재설치가 최고다
🚨 error_) 파일명이 main.css 인 채로 scss를 쓰려고 해서 계속 오류 발생
{ expectedcss(css-lcurlyexpected)
at-rule or selector expectedcss(css-ruleorselectorexpected)
참고 링크
<!--html-->
<body>
<div class="box"></div>
</body>
<!--scss-->
body{
border: 1px solid red;
.box{
color: green;
}
}
$primary-color: #e2e2e2;
background-color: $primary-color;
darken : 어둡게
lighten : 밝게
saturate : 더 선명하게(채도 올림)
sedaturate : 더 흐리게(채도 낮춤)
adjust-hue : 명도 변경
rgba : alpha값 변경
$baseColor : lightgray;
<!-- 주로 :hover 시 변화를 나타낼 때 사용해줌 -->
color : darken($baseColor,20%); > 20% 더 어둡게
color : lighten($baseColor,20%); > 20% 더 밝게
color : saturate($baseColor,70%); > 채도 70% 올림
color : sedaturate($baseColor,70%); > 채도 70% 낮춤
color : adjust-hue($baseColor,60deg); > 명도 변경 가능 %, deg(각도)
color : rgba($baseColor,0~1); > 2번째 인자는 opacity
유사한 내용물은 복사해와서 수정하는게 아니라
확장으로 가져와서 필요한 부분만 수정한다.
<button class="btn-1">버튼1</button>
<button class="btn-2">버튼2</button>
.btn-1{
padding: 10px 20px;
cursor: pointer;
<!-- inherit은 부모 객체의 값을 가져오는 것입니다 -->
background-color: inherit;
border: 1px solid black;
border-radius: 14px;
}
.btn-2{
@extend .btn-1;
border: 1px solid red;
color: red;
font-weight: 400;
}
<!-- %가 붙은 scss 선택자는 임시 선택자로-->
<!-- 실제로 html에서 호출해 사용하는 class는 아니지만 -->
<!-- extend를 위해 작성해 놓은 scss를 말한다 -->
%btn{
padding: 10px 20px;
cursor: pointer;
<!-- inherit은 부모 객체의 값을 가져오는 것입니다 -->
background-color: inherit;
border: 1px solid black;
border-radius: 14px;
}
.btn-1{
@extend %btn;
color: blue;
border: 1px solid bule;
}
@mixin 버튼() {
padding: 10px 20px;
cursor: pointer;
border: 1px solid black;
border-radius: 14px;
}
.btn-1{
@include 버튼();
border: 1px solid red;
color: red;
font-weight: 400;
}
상위버전
@mixin 버튼($테두리, $글자색) {
padding: 10px 20px;
cursor: pointer;
border: 1px solid $테두리;
border-radius: 14px;
color: $글자색;
}
.btn-1{
@include 버튼(blue, red);
}
default값 설정 가능
@mixin 버튼($테두리 : green, $글자색 : green) {
padding: 10px 20px;
cursor: pointer;
border: 1px solid $테두리;
border-radius: 14px;
color: $글자색;
}
.btn-1{
@include 버튼();
}
.box {
width: calc(10em - 100px)
}
calc를 사용하지 않아도 + - * / 연산을 사용할 수 있다.
단, /를 사용하려면 ( 괄호 ) 안에 넣어 연산해야 한다.
다른 파일을 끌어다 쓸 때 사용한다.
@use "./경로.css";
🚨 scss 파일명 작성 시 _ 언더바 를 넣어 작성하면 import 용도로 사용되는 파일임을 구분한다.
@import 시에 _ 언더바를 작성하지 않아도 된다.