ν¨μ¨μ μΈ μ€νμΌμνΈ λλ²κΉ μ μν CSS @debugμ κ°λ ₯ν κΈ°λ₯μ μμ보μΈμ. λ¬Έλ², μ¬μ©λ², λΈλΌμ°μ νΈνμ± λ° κ³ κΈ κΈ°μ μ λ°°μ λ μνν μΉ κ°λ°μ κ²½ννμΈμ.
CSS @debug: κ°λ°μλ₯Ό μν μ€νμΌμνΈ λλ²κΉ κ°μ΄λ
λλ²κΉ
μ μΉ κ°λ°μ νμμ μΈ λΆλΆμ΄λ©° CSSλ μμΈλ μλλλ€. μ½μ λ‘κΉ
κ³Ό κ°μ μ ν΅μ μΈ λ°©λ²λ λμμ΄ λ μ μμ§λ§, CSS μ μ²λ¦¬κΈ°(Sassλ Lessμ κ°μ)λ λλ²κΉ
μ μν΄ νΉλ³ν μ€κ³λ κ°λ ₯ν λκ΅¬μΈ @debug μ§μμ΄λ₯Ό μ 곡ν©λλ€. μ΄ κ°μ΄λμμλ @debug κ·μΉ, λ¬Έλ², μ¬μ©λ², λΈλΌμ°μ νΈνμ± λ° κ³ κΈ κΈ°μ μ νꡬνμ¬ λ μννκ³ μ μ§ κ΄λ¦¬νκΈ° μ¬μ΄ μ€νμΌμνΈλ₯Ό λ§λλ λ° λμμ λ릴 κ²μ
λλ€.
CSS @debugλ 무μμΈκ°?
@debug μ§μμ΄λ μ»΄νμΌ κ³Όμ μμ λ³μ κ°κ³Ό λ©μμ§λ₯Ό λΈλΌμ°μ μ κ°λ°μ μ½μμ μ§μ μΆλ ₯ν μ μκ² ν΄μ€λλ€. μ΄λ 볡μ‘ν λ‘μ§κ³Ό κ³μ°μΌλ‘ μΈν΄ λλ²κΉ
μ΄ μ΄λ €μΈ μ μλ CSS μ μ²λ¦¬κΈ° μμ
μ νΉν μ μ©ν©λλ€. μΌλ° CSSμ λ¬λ¦¬ @debugλ λΈλΌμ°μ μμ κΈ°λ³Έμ μΌλ‘ μ§μλμ§ μμΌλ©° CSS μ μ²λ¦¬κΈ° μ μ©μ
λλ€.
λ¬Έλ² λ° μ¬μ©λ²
@debug μ¬μ© λ¬Έλ²μ κ°λ¨ν©λλ€. Sass λλ Less μ½λ λ΄μμ κ²μ¬νλ €λ κ°μ΄λ ννμ λ€μ @debugλ₯Ό μ¬μ©νκΈ°λ§ νλ©΄ λ©λλ€.
Sass μμ
Sassμμμ λ¬Έλ²μ λ€μκ³Ό κ°μ΅λλ€:
@debug expression;
μλ₯Ό λ€μ΄:
$primary-color: #007bff;
$font-size: 16px;
@debug $primary-color;
@debug $font-size + 2px;
μ΄λ κ² νλ©΄ $primary-colorμ κ°κ³Ό $font-size + 2pxμ κ²°κ³Όκ° μ½μμ μΆλ ₯λ©λλ€.
Less μμ
Lessμμμ λ¬Έλ²μ λ§€μ° μ μ¬ν©λλ€:
@debug expression;
μλ₯Ό λ€μ΄:
@primary-color: #007bff;
@font-size: 16px;
@debug @primary-color;
@debug @font-size + 2px;
μ΄λ Sass μμ μ μ μ¬ν μΆλ ₯μ μμ±ν©λλ€.
κΈ°λ³Έ μμ
@debugμ κ°λ ₯ν¨μ 보μ¬μ£Όλ λͺ κ°μ§ κΈ°λ³Έ μμ λ₯Ό μ΄ν΄λ³΄κ² μ΅λλ€.
λ³μ λλ²κΉ
μ΄λ κ°μ₯ μΌλ°μ μΈ μ¬μ© μ¬λ‘μ
λλ€. μ€νμΌμνΈμ μ΄λ μ§μ μμλ @debugλ₯Ό μ¬μ©νμ¬ λ³μ κ°μ κ²μ¬ν μ μμ΅λλ€.
Sass:
$grid-columns: 12;
$grid-gutter: 20px;
$container-width: calc((100% - ($grid-gutter * ($grid-columns - 1))) / $grid-columns);
@debug $container-width;
μ΄λ κ² νλ©΄ κ³μ°λ $container-width κ°μ΄ μ½μμ μΆλ ₯λμ΄ κ³μ°μ΄ μ¬λ°λ₯Έμ§ νμΈν μ μμ΅λλ€.
λ―Ήμ€μΈ/ν¨μ λλ²κΉ
볡μ‘ν λ―Ήμ€μΈμ΄λ ν¨μλ₯Ό λλ²κΉ
ν λ @debugλ λ§€μ° μ μ©ν μ μμ΅λλ€.
Sass:
@mixin breakpoint($point) {
@if $point == sm {
@media (min-width: 576px) {
@content;
}
} @else if $point == md {
@media (min-width: 768px) {
@content;
}
} @else if $point == lg {
@media (min-width: 992px) {
@content;
}
} @else {
@debug "Invalid breakpoint: #{$point}";
}
}
@include breakpoint(xl) {
.container {
max-width: 1200px;
}
}
μ΄ μμ μμ breakpoint λ―Ήμ€μΈμ΄ μ ν¨νμ§ μμ κ°μ λ°μΌλ©΄ @debug μ§μμ΄κ° μ½μμ μ€λ₯ λ©μμ§λ₯Ό μΆλ ₯ν©λλ€.
λ°λ³΅λ¬Έ λλ²κΉ
λ°λ³΅λ¬ΈμΌλ‘ μμ
ν λ @debugλ₯Ό μ¬μ©νλ©΄ λ°λ³΅ λ³μμ μ§ν μν©κ³Ό κ°μ μΆμ νλ λ° λμμ΄ λ μ μμ΅λλ€.
Sass:
@for $i from 1 through 5 {
.item-#{$i} {
width: percentage($i / 5);
@debug $i;
}
}
μ΄λ κ² νλ©΄ 루νμ κ° λ°λ³΅μ λν $i κ°μ΄ μΆλ ₯λμ΄ μ§ν μν©μ λͺ¨λν°λ§ν μ μμ΅λλ€.
κ³ κΈ κΈ°μ
κΈ°λ³Έμ λμ΄, @debugλ 볡μ‘ν μ€νμΌμνΈλ₯Ό λλ²κΉ
νλ λ° λμμ΄ λλ λ μ κ΅ν λ°©λ²μΌλ‘ μ¬μ©λ μ μμ΅λλ€.
μ‘°κ±΄λΆ λλ²κΉ
@debugλ₯Ό 쑰건문과 κ²°ν©νμ¬ νΉμ 쑰건μμλ§ λλ²κΉ
μ 보λ₯Ό μΆλ ₯ν μ μμ΅λλ€.
Sass:
$debug-mode: true;
@if $debug-mode {
@debug "Debug mode is enabled!";
$primary-color: #ff0000; // λλ²κΉ
μ μν΄ κΈ°λ³Έ μμ μ¬μ μ
} else {
$primary-color: #007bff;
}
.button {
background-color: $primary-color;
}
μ΄ μμ μμλ $debug-mode λ³μκ° trueλ‘ μ€μ λ κ²½μ°μλ§ λλ²κ·Έ λ©μμ§μ μμ μ¬μ μκ° μ μ©λ©λλ€. μ΄λ₯Ό ν΅ν΄ νλ‘λμ
μ½λλ₯Ό μ΄μ§λ½νμ§ μκ³ λλ²κΉ
μ 보λ₯Ό μ½κ² μΌκ³ λ μ μμ΅λλ€.
볡μ‘ν κ³μ° λλ²κΉ
볡μ‘ν κ³μ°μ λ€λ£° λ, κ³μ°μ λΆν΄νμ¬ κ° λ¨κ³λ₯Ό κ°λ³μ μΌλ‘ λλ²κΉ ν μ μμ΅λλ€.
Sass:
$base-font-size: 16px;
$line-height: 1.5;
$margin-bottom: 1rem;
$calculated-margin: ($base-font-size * $line-height) + ($margin-bottom * $base-font-size);
@debug $base-font-size * $line-height;
@debug $margin-bottom * $base-font-size;
@debug $calculated-margin;
κ³μ°μ κ° λ¨κ³λ₯Ό λλ²κΉ ν¨μΌλ‘μ¨ μ€λ₯μ μμΈμ μ μνκ² νμ ν μ μμ΅λλ€.
λ§΅(μ°κ΄ λ°°μ΄) λλ²κΉ
Sassλ Less μ½λμμ λ§΅(μ°κ΄ λ°°μ΄μ΄λΌκ³ λ ν¨)μ μ¬μ©νλ κ²½μ° @debugλ₯Ό μ¬μ©νμ¬ κ·Έ λ΄μ©μ κ²μ¬ν μ μμ΅λλ€.
Sass:
$theme-colors: (
"primary": #007bff,
"secondary": #6c757d,
"success": #28a745,
"danger": #dc3545
);
@debug $theme-colors;
μ΄λ κ² νλ©΄ μ 체 $theme-colors λ§΅μ΄ μ½μμ μΆλ ₯λμ΄ μ¬λ°λ₯Έ κ°μ ν¬ν¨νκ³ μλμ§ νμΈν μ μμ΅λλ€.
μ¬μ©μ μ§μ ν¨μ λλ²κΉ
μ¬μ©μ μ§μ ν¨μλ₯Ό λ§λ€ λ @debugλ₯Ό μ¬μ©νμ¬ μ
λ ₯ λ§€κ°λ³μμ λ°ν κ°μ μΆμ νμΈμ.
Sass:
@function lighten-color($color, $amount) {
@debug "μλ³Έ μμ: #{$color}";
@debug "λ°κΈ° μ‘°μ μ: #{$amount}";
$lightened-color: mix(white, $color, $amount);
@debug "λ°μμ§ μμ: #{$lightened-color}";
@return $lightened-color;
}
.element {
background-color: lighten-color(#007bff, 20%);
}
μ΄λ₯Ό ν΅ν΄ μ λ ₯ μμ, λ°κΈ° μ‘°μ μ, κ·Έλ¦¬κ³ κ²°κ³Όλ‘ λμ¨ λ°μμ§ μμμ λ³Ό μ μμ΄ ν¨μκ° μμλλ‘ μλνλμ§ νμΈνλ λ° λμμ΄ λ©λλ€.
λΈλΌμ°μ νΈνμ±
@debugλ λ€μ΄ν°λΈ CSS κΈ°λ₯μ΄ μλλΌ Sassλ Lessμ κ°μ CSS μ μ²λ¦¬κΈ°μ νΉνλ μ§μμ΄λΌλ μ μ μ΄ν΄νλ κ²μ΄ μ€μν©λλ€. λ°λΌμ λΈλΌμ°μ νΈνμ±μ μ§μ μ μΌλ‘ κ΄λ ¨μ΄ μμ΅λλ€. λΈλΌμ°μ λ μ»΄νμΌλ CSSλ§ λ³Ό λΏ @debug ꡬ문μ λ³΄μ§ λͺ»ν©λλ€.
λλ²κΉ μΆλ ₯μ μΌλ°μ μΌλ‘ μ»΄νμΌ κ³Όμ μμ λΈλΌμ°μ μ κ°λ°μ μ½μμ νμλ©λλ€. μ΄ μ λ³΄κ° νμλλ λ°©μμ νΉμ μ μ²λ¦¬κΈ°μ μ¬μ© μ€μΈ λꡬ(μ: λͺ λ Ήμ€ μ»΄νμΌλ¬, λΉλ μμ€ν ν΅ν©, λΈλΌμ°μ νμ₯ νλ‘κ·Έλ¨)μ λ°λΌ λ€λ¦ λλ€.
@debugμ λμ
@debugλ κ°λ ₯ν λꡬμ΄μ§λ§, νΉν CSS μ μ²λ¦¬κΈ°λ₯Ό μ¬μ©νμ§ μκ±°λ λΈλΌμ°μ μμ μ΅μ’
λ λλ§λ CSSλ₯Ό λλ²κΉ
ν λ CSS λλ²κΉ
μ λν λ€λ₯Έ μ κ·Ό λ°©μμ΄ μμ΅λλ€.
- λΈλΌμ°μ κ°λ°μ λꡬ: λͺ¨λ μ΅μ λΈλΌμ°μ λ CSS κ·μΉμ κ²μ¬νκ³ , μ€μκ°μΌλ‘ μ€νμΌμ μμ νλ©°, λ λλ§ λ¬Έμ λ₯Ό μλ³ν μ μλ κ°λ ₯ν κ°λ°μ λꡬλ₯Ό μ 곡ν©λλ€. "Elements" λλ "Inspector" νμ λλ²κΉ μ λ§€μ° μ μ©ν©λλ€.
- μ½μ λ‘κΉ
: CSSμ κ΅νλ κ²μ μλμ§λ§, JavaScriptμμ
console.log()λ₯Ό μ¬μ©νμ¬ CSS μμ±κ³Ό κ΄λ ¨λ κ°μ μΆλ ₯ν μ μμ΅λλ€. μλ₯Ό λ€μ΄, μμμ κ³μ°λ μ€νμΌμ λ‘κΉ ν μ μμ΅λλ€. - CSS λ¦°ν : Stylelintμ κ°μ λꡬλ μ μ¬μ μΈ μ€λ₯λ₯Ό μλ³νκ³ CSSμμ μ½λ© νμ€μ κ°μ νλ λ° λμμ μ€ μ μμ΅λλ€.
- μ£Όμ μ²λ¦¬: CSSμ μΌλΆλ₯Ό μΌμμ μΌλ‘ μ£Όμ μ²λ¦¬νλ©΄ λ¬Έμ μ μμΈμ λΆλ¦¬νλ λ° λμμ΄ λ μ μμ΅λλ€.
- ν λ리 κ°μ‘°: μμμ μμ ν λ리(μ: `border: 1px solid red;`)λ₯Ό μΆκ°νμ¬ ν¬κΈ°μ μμΉλ₯Ό μκ°νν©λλ€.
λͺ¨λ² μ¬λ‘
@debug λ° κΈ°ν λλ²κΉ
κΈ°μ μ ν¨κ³Όμ μΌλ‘ μ¬μ©νλ €λ©΄ λ€μ λͺ¨λ² μ¬λ‘λ₯Ό κ³ λ €νμΈμ:
- νλ‘λμ
λ°°ν¬ μ
@debugꡬ문 μ κ±°:@debugꡬ문μ μ΅μ’ CSS μΆλ ₯μ μν₯μ λ―ΈμΉμ§ μμ§λ§, μ½μμ μ΄μ§λ½νκ³ λ―Όκ°ν μ 보λ₯Ό λ ΈμΆν μ μμ΅λλ€. νλ‘λμ μ λ°°ν¬νκΈ° μ μ μ΄λ₯Ό μ κ±°νκ±°λ λλ²κ·Έ λͺ¨λλ₯Ό λΉνμ±νν΄μΌ ν©λλ€. - λͺ
ννκ³ μμ μ μΈ λλ²κ·Έ λ©μμ§ μ¬μ©:
@debugλ₯Ό λ¬Έμμ΄κ³Ό ν¨κ» μ¬μ©ν λ, λ©μμ§κ° λͺ ννκ³ μμ μ μ΄μ΄μ μΆλ ₯μ λ§₯λ½μ μ½κ² μ΄ν΄ν μ μλλ‘ νμΈμ. - μ½λ ꡬμ±: μ ꡬμ±λ λͺ¨λμ CSSλ λλ²κΉ νκΈ°κ° λ μ½μ΅λλ€. μ£Όμ, μλ―Έ μλ λ³μ μ΄λ¦μ μ¬μ©νκ³ λ³΅μ‘ν μ€νμΌμ λ μκ³ κ΄λ¦¬νκΈ° μ¬μ΄ λ©μ΄λ¦¬λ‘ λλμΈμ.
- λ²μ κ΄λ¦¬ μ¬μ©: Gitκ³Ό κ°μ λ²μ κ΄λ¦¬ μμ€ν μ μ¬μ©νλ©΄ λλ²κΉ μ€μ μ€λ₯κ° λ°μνμ λ μ½λμ μ΄μ λ²μ μΌλ‘ μ½κ² λλ릴 μ μμ΅λλ€.
- μ² μ ν ν μ€νΈ: λλ²κΉ νμλ λ€μν λΈλΌμ°μ μ μ₯μΉμμ CSSλ₯Ό μ² μ ν ν μ€νΈνμ¬ μμλλ‘ μλνλμ§ νμΈνμΈμ.
κΈλ‘λ² κ΄μ μμμ μμ
@debugλ₯Ό μ¬μ©ν CSS λλ²κΉ
μμΉμ μ§λ¦¬μ μμΉλ λμ κ³ κ°μ κ΄κ³μμ΄ μΌκ΄λκ² μ μ§λ©λλ€. κ·Έλ¬λ λλ²κΉ
νλ νΉμ CSS μμ± λ° μ€νμΌμ νλ‘μ νΈ μꡬ μ¬ν λ° λ¬Ένμ λ§₯λ½μ λ°λΌ λ¬λΌμ§ μ μμ΅λλ€.
- λ€μν νλ©΄ ν¬κΈ°μ λν λ°μν λ μ΄μμ λλ²κΉ
(κΈλ‘λ²): κΈλ‘λ² κ³ κ°μ μν λ°μν μΉμ¬μ΄νΈλ₯Ό ꡬμΆν λ
@debugλ₯Ό μ¬μ©νμ¬ μ€λ¨μ (breakpoint)μ΄ μ¬λ°λ₯΄κ² μλνλμ§, κ·Έλ¦¬κ³ λ€μν κ΅κ°μμ μ¬μ©λλ μ¬λ¬ νλ©΄ ν¬κΈ°μ λ μ΄μμμ΄ μ μ νκ² μ μνλμ§ νμΈν μ μμ΅λλ€. μλ₯Ό λ€μ΄, μμμμμ λ리 μ¬μ©λλ νλ©΄ ν¬κΈ°λ λΆλ―Έλ μ λ½μ νλ©΄ ν¬κΈ°μ λ€λ₯Ό μ μμ΅λλ€. - λ€μν μΈμ΄μ λν νμ΄ν¬κ·ΈλνΌ λλ²κΉ
(κ΅μ ν): λ€κ΅μ΄ μΉμ¬μ΄νΈ μμ
μ
@debugλ₯Ό μ¬μ©νμ¬ κΈκΌ΄ ν¬κΈ°, μ€ λμ΄, κΈμ κ°κ²©μ΄ λ€μν μ€ν¬λ¦½νΈμ μΈμ΄μ μ ν©νμ§ νμΈν μ μμ΅λλ€. μΌλΆ μΈμ΄λ μ΅μ μ κ°λ μ±μ μν΄ λ ν° κΈκΌ΄ ν¬κΈ°λ λ€λ₯Έ μ€ λμ΄κ° νμν μ μμ΅λλ€. μ΄λ λΌν΄ κΈ°λ° μΈμ΄, ν€λ¦΄ λ¬Έμ, μλμ΄ λλ CJK (μ€κ΅μ΄, μΌλ³Έμ΄, νκ΅μ΄) λ¬Έμλ₯Ό λ€λ£° λ λͺ¨λ κ΄λ ¨μ΄ μμ΅λλ€. - μ€λ₯Έμͺ½μμ μΌμͺ½(RTL) λ μ΄μμ λλ²κΉ
(μ€λ, λΆμν리카): μλμ΄λ νλΈλ¦¬μ΄μ κ°μ΄ μ€λ₯Έμͺ½μμ μΌμͺ½μΌλ‘ μ°λ(RTL) μΈμ΄λ₯Ό μν μΉμ¬μ΄νΈλ₯Ό κ°λ°ν λ
@debugλ₯Ό μ¬μ©νμ¬ λ μ΄μμμ΄ μ¬λ°λ₯΄κ² λ―Έλ¬λ§λκ³ λͺ¨λ μμκ° μ μ νκ² λ°°μΉλμλμ§ νμΈν μ μμ΅λλ€. - λ¬Ένμ λ―Όκ°μ±μ μν μμ νλ νΈ λλ²κΉ
(μ§μλ³λ‘ λ€λ¦): μμμ λ¬Ένλ§λ€ λ€λ₯Έ μλ―Έμ μ°κ΄μ±μ κ°μ§ μ μμ΅λλ€. μΉμ¬μ΄νΈμ μμ νλ νΈλ₯Ό μ νν λ
@debugλ₯Ό μ¬μ©νμ¬ λ€μν μμ μ‘°ν©μ μ€ννκ³ λμ κ³ κ°μκ² λ¬Ένμ μΌλ‘ μ ν©νμ§ νμΈν μ μμ΅λλ€. μλ₯Ό λ€μ΄, νΉμ μμμ μΌλΆ λ¬ΈνκΆμμ λΆμ΄νκ±°λ 곡격μ μΈ κ²μΌλ‘ κ°μ£Όλ μ μμ΅λλ€. - λ€μν λ°μ΄ν° νμμ λν μμ μ ν¨μ± κ²μ¬ λλ²κΉ
(κ΅κ°λ³λ‘ λ€λ¦): μ¬μ©μ λ°μ΄ν°λ₯Ό μμ§νλ μμμ λ§λ€ λ μ¬μ©μμ κ΅κ°μ λ°λΌ λ€λ₯Έ λ°μ΄ν° νμμ μ²λ¦¬ν΄μΌ ν μ μμ΅λλ€. μλ₯Ό λ€μ΄, μ νλ²νΈ, μ°νΈλ²νΈ, λ μ§λ μ§μλ§λ€ νμμ΄ λ€λ₯Ό μ μμ΅λλ€.
@debugλ₯Ό μ¬μ©νμ¬ μμ μ ν¨μ± κ²μ¬κ° λ€μν λ°μ΄ν° νμμ λν΄ μ¬λ°λ₯΄κ² μλνλμ§ νμΈν μ μμ΅λλ€.
κ²°λ‘
CSS @debug μ§μμ΄λ νΉν Sassλ Lessμ κ°μ CSS μ μ²λ¦¬κΈ°λ‘ μμ
ν λ μ€νμΌμνΈλ₯Ό λλ²κΉ
νλ κ°λ ₯ν λꡬμ
λλ€. @debugλ₯Ό ν¨κ³Όμ μΌλ‘ μ¬μ©ν¨μΌλ‘μ¨ μ€λ₯λ₯Ό μ μνκ² μλ³νκ³ μμ νμ¬ μ€νμΌμνΈκ° μμλλ‘ μλνλλ‘ λ³΄μ₯ν μ μμ΅λλ€. νλ‘λμ
μ λ°°ν¬νκΈ° μ μ @debug ꡬ문μ μ κ±°νλ κ²μ μμ§ λ§κ³ , CSS λλ²κΉ
μ λν ν¬κ΄μ μΈ μ κ·Όμ μν΄ @debugμ ν¨κ» λ€λ₯Έ λλ²κΉ
κΈ°μ μ μ¬μ©νλ κ²μ κ³ λ €νμΈμ. μ΄ κ°μ΄λμ μ€λͺ
λ λͺ¨λ² μ¬λ‘λ₯Ό λ°λ₯΄λ©΄ CSS κ°λ° μν¬νλ‘μ°λ₯Ό κ°μ νκ³ λ μ μ§ κ΄λ¦¬νκΈ° μ½κ³ κ²¬κ³ ν μ€νμΌμνΈλ₯Ό λ§λ€ μ μμ΅λλ€.