[DAY-33] CSS μ¬ν (5)
π ν·κ°λ Έλ & λͺ°λλ λΆλΆλ€λ§ μ 리νλ λλ§μ TIL
π― λͺ¨λ κ°μ λ΄μ©μ μ μ§ μμμ!
μ€λμ μκ°μ?
λλμ΄ SCSSκ° λλ¬μ΅λλ€!
μ²μμλ CSSλ₯Ό κ·Έλ₯ μ‘°κΈ λ κ°νΈνκ² μμ±ν μ μꡬλ~ λΌλ λλμΌλ‘ SCSSλ₯Ό 곡λΆνκΈ° μμνλλ°, κ·Έλ₯ μλ‘μ΄ μΈμ΄ νλ λ λ°°μ°λ λλμ΄ λ μ»Έλ..
CSS μ€νμΌ μμ±λ€μ SCSSλ₯Ό μ΄μ©νλ©΄ μ λ§ κ°νΈνκ² μμ±ν μ μμ΅λλ€.
μμΌλ‘ νλ‘μ νΈλ₯Ό μ§νν λ SCSSλ₯Ό λ μ κ·Ήμ μΌλ‘ νμ©ν΄λ³΄λλ‘ νκ² μ΅λλ€.
λλμ΄ μ£Όλ¨Ήκ΅¬κ΅¬λ‘ μ λ CSSλ₯Ό κ°λ
μ± μ’κ² μ μ μ μκ² μ΄μ νν
νμ§λ§ μμ§ μ€νμΌ μμ±μ λΆλ¦¬ν΄μ @mixinμ λ§λ€κ³ ..
κ°μ²΄ ννλ‘ λΆλ¦¬ν΄μ μ¬μ©νλ κ²μ μ‘°κΈ μ΅μμΉκ° μλ€μ
[1] SCSS νμ₯
@extend
λ₯Ό μ¬μ©νμ¬ κΈ°μ‘΄μ μμμ μλ μμ±λ€μ λ€λ₯Έ μμμ μ μ©μν¬ μ μμ΅λλ€.
.btn-primary
μλ .btn
μ μμ±λ€μ΄ μ μ©λ κ²μ νμΈν μ μμ΅λλ€.
λν μμμ κ°λ μΌλ‘λ μ¬μ©ν μ μμ΅λλ€.
νμ§λ§ μ΄λ¬ν λ°©μμΌλ‘ μ¬μ©ν λ, μ€μ²©μ λν μ¬μ©μ μ΅λν νΌν΄μΌ μ νμ ννμ λΆμμ©μ λ°©μ§ν μ μμ΅λλ€.
.container {
.item {
color: red;
.box {
@extend .item;
&::after {
content: "";
@extend .item;
}
}
}
}
/* μ νμ νν */
.container .item,
.container .item .box::after,
.container .item .box::after .box,
.container .item .box {
color: red;
}
.container .item .box::after {
content: "";
}
- % (placeholder μ νμ)
%
λ .btnμ κ°μ΄ class μ νμλ₯Ό μ¬μ©νμ§ μκ³ , @extend
λ₯Ό μ¬μ©ν μ μκ² μ μν΄μ£Όλ μ νμμ
λλ€.
.btnμ λ°λ‘ μ μλμ§ μμ΅λλ€.
μ΄λ, μ£Όμμ¬νμ mediaκ·μΉ λ΄μμ μ¬μ©ν placeholder μ νμλ κ·Έ μμμ μ μλμ΄ μμ΄μΌ ν©λλ€.
@media all and (max-width: 1400px) {
%box {
color: red;
}
.box {
@extend %box;
}
}
μ¬λ¬ λ¬Έμ κ° λ§κΈ° λλ¬Έμ
@extend
보λ€λ@mixin
κ·μΉμ μ¬μ©νλ κ²μ΄ λ μ’μ΅λλ€.
[2] SCSS ν¨μ
@function
μ μ΄μ©ν΄μ ν¨μλ₯Ό μμ±ν μ μμ΅λλ€.
λν @error
μ μ¬μ©νμ¬ μμΈμ²λ¦¬κ° κ°λ₯ν©λλ€.
ν¨μλ₯Ό μμ±ν λ CSSμ λ΄μ₯λμ΄ μλ λ€μν ν¨μμ μ΄λ¦μ κ²ΉμΉκ² νμ§ μκΈ° μν΄
λ κ°μ λ¨μ΄λ₯Ό μ‘°ν©ν΄μ μ΄λ¦μ μμ±νλ κ²μ΄ μΌλ°μ μ΄λΌλ κ²μ μ£Όμν΄μΌ ν©λλ€.
@function my-grid($col: 1, $total: 12, $rest...) {
@if ($col > $total) {
@error '$col must be less then $total.';
}
@if (list.length($rest) > 0) {
@error 'Unnecessary arguments include.';
}
@return $columns-width * $col / $total;
}
[3] SCSS 쑰건, λ°λ³΅ ꡬ문
SCSS
μμ 쑰건, λ°λ³΅λ¬Έμ μ¬μ©ν μ μμ΅λλ€.
[3-1] 쑰건문
쑰건문μμλ @if, @else if, @else
λ₯Ό μ λΆ μ¬μ©ν μ μμ΅λλ€.
@mixin avatar($size, $circle: false) {
width: $size;
height: $size;
@if $circle {
border-radius: $size / 2;
}
}
.sqare-av {
@include avatar(100px, $circle: false);
}
.circle-av {
@include avatar(100px, $circle: true);
}
[3-2] λ°λ³΅λ¬Έ
[1] @each
λ¨μν λ°°μ΄κ³Ό κ°μ²΄ μνλ @each
ꡬ문μ ν΅ν΄μ μμ±ν μ μμ΅λλ€.
[2] @for
μ°λ¦¬κ° νν μκ³ μλ λ°λ³΅λ¬Έ μμ±μ μν΄μ @for
ꡬ문μ μ¬μ©ν μ μμ΅λλ€.
λ κ°μ ννλ‘ μμ±ν μ μμ΅λλ€.
for λ³μ from μμ through λ
(λμ΄ ν¬ν¨λ©λλ€.)for λ³μ from μμ to λ
(λμ΄ ν¬ν¨λμ§ μμ΅λλ€.)
[3] @while
쑰건λΆλΆμ΄ μ’
λ£λ λ 루νμμ λΉ μ Έλμ€λ @while
κ΅¬λ¬Έμ΄ μμ΅λλ€.
[4] SCSS κ°μ Έμ€κΈ°, λͺ¨λ
[4-1] κ°μ Έμ€κΈ°
@import β./variablesβ;
μ ννλ‘ SCSS νμΌμ κ°μ Έμ μ¬μ©ν μ μμ΅λλ€.
νμ₯μλ₯Ό μλ΅ν΄μ μ μ μ μμΌλ©°, νμΌ λ§¨ μμ _
κ° μμ΄λ μλ΅νκ³ μ μ μ μμ΅λλ€.
ν΄λΉ νμΌ μμ μλ λ³μλ€μ μ΄λ¦μ κ·Έλλ‘ μ¬μ©ν μ μμ΅λλ€.
sass scss:css(sass μ§κΈ νμΌμ΄ μλ ν΄λ: μ»΄νμΌ λ νμΌλ€μ΄ μ μ₯λ ν΄λ)
λͺ
λ Ήμ΄λ₯Ό ν΅ν΄
SCSS
νμΌμ CSS
λ‘ μ»΄νμΌ ν μ μμ΅λλ€.
μ΄λ, νμΌ μμ _
κ° μλ SCSS
νμΌλ€μ μ»΄νμΌ λμμ ν¬ν¨λμ§ μμ λ°λ‘ νμΌμ΄ μμ±λμ§ μμ΅λλ€.
[4-2] λͺ¨λ
@use β./variablesβ as var;
μ ννλ₯Ό SCSS νμΌμ λͺ¨λν ν΄μ μ¬μ©ν μ μμ΅λλ€.
νμ₯μλ₯Ό μλ΅ν΄μ μ μ μ μμΌλ©°, νμΌ λ§¨ μμ _
κ° μμ΄λ μλ΅νκ³ μ μ μ μμ΅λλ€.
ν΄λΉ νμΌ μμ μλ λ³μλ€μ μ΄λ¦μ μ¬μ©νκΈ° μν΄μλ νμΌ μ΄λ¦(λλ κ΅μ²΄λ μ΄λ¦).λ³μ μ΄λ¦
μ ννλ‘ μ¬μ©ν΄μΌ ν©λλ€.
λν exportμ μν λ‘ @forward
ν€μλλ₯Ό μ¬μ©ν μ μμ΅λλ€.
as λ€μ κ΅μ²΄λ μ΄λ¦μ μ μ λ, *
λ₯Ό μ¬μ©ν μ μμ΅λλ€
@forward β./mixinsβ as mix-*;
λ°λΌμ mix-mixinsμ ννλ‘ μ¬μ©ν μ μμ΅λλ€.
ν¨μ μ¬μ©κ³Ό λΉμ·νκ² νμΌμ μ΄λ¦μ κ²ΉμΉμ§ μκ² λ κ°μ§ λ¨μ΄λ₯Ό μ‘°ν©ν΄μ μ¬μ©νλ κ²μ΄ μΌλ°μ μ λλ€.
[5] SCSS λ΄μ₯ λͺ¨λ
μ΄λ―Έ λ§λ€μ΄μ Έ λ΄μ₯λμ΄ μλ κΈ°λ₯λ€μ λͺ¨λλ‘μ¨ μ΄μ©ν μ μλ λ΄μ₯ λͺ¨λλ€μ λΆλ¬μ μ¬μ©ν μ μμ΅λλ€.
Sass-lang.com Built-in Modules
- sass:color - μμ κ΄λ ¨
- sass:list - 리μ€νΈ νμ
- sass:map - κ°μ²΄ νμ
- sass:math - κ³μ°
- sass:meta - μ½λ°±, νμ μ²΄ν¬ λ±
- sass:selector
- sass:string - λ¬Έμμ΄ κ΄λ ¨
κ° λͺ¨λμ sass-lang μ¬μ΄νΈλ₯Ό μ°Έκ³ νμ¬ μ¬μ©ν μ μμ΅λλ€.
[6] λλ²κ·Έ
[6-1] @debug
@debug
λ‘ λλ²κ·Έ λ©μΈμ§λ₯Ό λ¨κΈΈ μ μμ΅λλ€.
μΌμ’
μ console.log()
μ μν λ‘μ¨ μ¬μ©ν μ μμ΅λλ€.
[6-2] @warn
@warn
μ μ¬μ©ν΄μ κ²½κ³ λ©μΈμ§λ₯Ό λ¨κΈΈ μ μμ΅λλ€.
console.warn()
μ μν λ‘μ¨ μ¬μ©ν μ μμ΅λλ€.
[6-3] @error
@error
λ₯Ό μ¬μ©ν΄μ μλ¬ λ©μΈμ§λ₯Ό λ¨κΈΈ μ μμ΅λλ€.
μλ¬ λ©μΈμ§λ μ»΄νμΌμ΄ μΌμ΄λμ§ μκ² ν΄μ€λλ€.
μ΄λ console.error()
μ μν λ° new Error
μ μν λ‘μ¨ μ¬μ©ν μ μμ΅λλ€.
μ¬μ©μ λ°λΌ μ μ ν λ©μΈμ§λ₯Ό λ¨κΈ°λ©΄ μ»΄νμΌ μ μ΄λ λΆλΆμμ μλ¬κ° μΌμ΄λ¬λμ§, μ΄λ»κ² μ»΄νμΌ λμλμ§ νμΈνκΈ° μ½μ΅λλ€.
λκΈλ¨κΈ°κΈ°