업무 할 때 자주 쓰는 SCSS 문법 정리
gulpfile.js
를 만들어 다음과 같이 설정할 수 있음// gulpfile.js
var gulp = require('gulp')
var sass = require('gulp-sass')
// 일반 컴파일
gulp.task('sass', function () {
return gulp.src('./src/scss/*.scss') // 입력 경로
.pipe(sass().on('error', sass.logError))
.pipe(gulp.dest('./dist/css')); // 출력 경로
});
// 런타임 중 파일 감시
gulp.task('sass:watch', function () {
gulp.watch('./src/scss/*.scss', ['sass']); // 입력 경로와 파일 변경 감지 시 실행할 Actions(Task Name)
});
.container {
width: 100%;
ul {
display: flex;
flex-wrap: wrap;
li {
color: #0066ff;
span {
padding: 20px;
}
}
}
}
.container {
width: 100%;
}
.container ul {
display: flex;
flex-wrap: wrap;
}
.container ul li {
color: #06f;
}
.container ul li span {
padding: 20px;
}
중첩 안에서
&
키워드는 부모 선택자를 참조하여 치환함
ul{
.list-item{
color: #333;
&.is-active{
color: #0066ff;
}
&:first-child{
font-size: 1.6rem;
}
&:not(:first-child){
font-size: 1.4rem;
}
}
}
.col {
&-sm-2{
width: 20%;
}
&-sm-3{
width: 30%;
}
&-sm-5{
width: 50%;
}
&-sm-7{
width: 70%;
}
&-sm-8{
width: 80%;
}
}
ul .list-item {
color: #333;
}
ul .list-item.is-active {
color: #0066ff;
}
ul .list-item:first-child {
font-size: 1.6rem;
}
ul .list-item:not(:first-child) {
font-size: 1.4rem;
}
.col-sm-2 {
width: 20%;
}
.col-sm-3 {
width: 30%;
}
.col-sm-5 {
width: 50%;
}
.col-sm-7 {
width: 70%;
}
.col-sm-8 {
width: 80%;
}
.box {
.tit {
font-size: 56px;
line-height: 1.6;
}
@at-root .desc {
font-size: 30px;
line-height: 1.4;
}
}
.box .tit {
font-size: 56px;
line-height: 1.6;
}
.desc {
font-size: 30px;
line-height: 1.4;
}
padding-
,margin-
,font-
등 동일한 네임 스페이스를 가지는 속성을 다음과 같이 사용 가능
.list-item {
font: {
weight: 700;
size: 50px;
family: sans-serif;
}
margin: {
top: 50px;
bottom: 60px;
}
padding: {
left: 30px;
right: 30px;
}
}
.list-item {
font-weight: 700;
font-size: 50px;
font-family: sans-serif;
margin-top: 50px;
margin-bottom: 60px;
padding-left: 30px;
padding-right: 30px;
}
반복적으로 사용되는 값을 변수로 지정할 수 있음
변수 앞에는 항상$
를 붙임
// layout padding
$paddingTablet: 30px;
$paddingMobile: 40px;
// color
$color-white: #ffffff;
$color-black: #000000;
$color-red: #c00f0f;
.wrapper {
padding: $paddingTablet;
.box-01 {
color: $color-black;
}
.box-02 {
color: $color-white;
}
.box-03 {
color: $color-red;
}
}
.wrapper {
padding: 30px;
}
.wrapper .box-01 {
color: #000;
}
.wrapper .box-02 {
color: #fff;
}
.wrapper .box-03 {
color: #c00f0f;
}
@import
로 외부에서 가져온 sass파일은 모두 단일 css 출력파일로 병합됨
@import "style.css";
@import "http://example.com/ex";
@import url(example);
@import "../mixins";
$width: 150px;
.list-item {
@if not($width > 200px) {
height: 500px;
}
}
.list-item {
height: 500px;
}
$width: 150px;
.list-item {
@if not($width > 100px) {
height: 500px;
}
}
.list-item {
height: 500px;
}
$width: 150px;
.list-item {
height: if($width > 200px, 300px, 500px);
}
.list-item {
height: 500px;
}
@mixin
으로 선언해서
@include
로 사용하면 됨
@mixin font-weight($fw) {
@if $fw == ExtraBold {
font-weight: 800;
}
@if $fw == Bold {
font-weight: 700;
}
@if $fw == SemiBold {
font-weight: 600;
}
@if $fw == Medium {
font-weight: 500;
}
@if $fw == Regular {
font-weight: 400;
}
@if $fw == Light {
font-weight: 300;
}
@if $fw == ExtraLight {
font-weight: 200;
}
@if $fw == Thin {
font-weight: 100;
}
}
h1 {
@include font-weight(SemiBold);
}
p {
@include font-weight(Medium);
}
h1 {
font-weight: 600;
}
p {
font-weight: 400;
}
@mixin line-height($font, $line) {
$line-height: ($line * 100 / $font) * 1%;
line-height: #{$line-height};
}
h1 {
@include line-height(30, 46)
}
p {
@include line-height(24, 30)
}
h1 {
line-height: 153.3333333333%;
}
p {
line-height: 125%;
}
Last Updated: 2021-05-31
내용 추가 예정