CSS @extendμ κ°λ ₯ν κΈ°λ₯μΌλ‘ λ κΉλνκ³ μ μ§λ³΄μνκΈ° μ¬μ΄ μ½λλ₯Ό μμ±νμΈμ. μ€μ©μ μΈ μμ μ λͺ¨λ² μ¬λ‘λ₯Ό ν΅ν΄ μ€νμΌμ μμνκ³ , μ€λ³΅μ νΌνλ©°, μμ νλ¦μ κ°μ νλ λ°©λ²μ λ°°μ보μΈμ.
CSS @extend: ν¨μ¨μ μΈ μΉ κ°λ°μ μν μ€νμΌ μμ λ§μ€ν°νκΈ°
λμμμ΄ λ°μ νλ μΉ κ°λ° μΈκ³μμ κΉ¨λνκ³ μ μ§λ³΄μ κ°λ₯νλ©° ν¨μ¨μ μΈ CSSλ₯Ό μμ±νλ κ²μ λ§€μ° μ€μν©λλ€. CSS μν€ν
μ²λ₯Ό ν¬κ² κ°μ ν μ μλ κ°λ ₯ν κΈ°μ μ€ νλλ @extend
μ§μμ΄μ
λλ€. Sassλ Lessμ κ°μ CSS μ μ²λ¦¬κΈ°μμ νν λ³Ό μ μλ μ΄ κΈ°λ₯(νμ§λ§ μ μ ν λ
Όμν λͺ κ°μ§ μ£Όμ μ¬νκ³Ό ν¨κ» CSS λ€μ΄ν°λΈμμλ μ¬μ© κ°λ₯)μ μ¬μ©νλ©΄ ν μ νμμμ λ€λ₯Έ μ νμλ‘ μ€νμΌμ μμνμ¬ μ€λ³΅μ μ€μ΄κ³ λ 체κ³μ μΈ μ½λλ² μ΄μ€λ₯Ό λ§λ€ μ μμ΅λλ€. μ΄ κ°μ΄λμμλ @extend
μ§μμ΄μ μ₯μ , μ¬μ© μ¬λ‘, λͺ¨λ² μ¬λ‘ λ° μ μ¬μ μΈ ν¨μ μ λν΄ μμΈν μμλ³Ό κ²μ
λλ€.
CSS @extendλ 무μμΈκ°?
@extend
μ§μμ΄λ κΈ°λ³Έμ μΌλ‘ νλμ CSS μ νμμ μ μλ μ€νμΌμ 볡μ¬νμ¬ λ€λ₯Έ μ νμμ μ μ©ν©λλ€. μ΄κ²μ ν΄λμ€(μ νμ)κ° λΆλͺ¨ ν΄λμ€(μ νμ)λ‘λΆν° μμ±κ³Ό λ©μλ(μ€νμΌ)λ₯Ό μμλ°μ μ μλ κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°μ μμ μμΉκ³Ό μ μ¬ν©λλ€. μ£Όλ λͺ©νλ DRY(Don't Repeat Yourself) μμΉμ μ€μνμ¬ μ€λ³΅ μ½λλ₯Ό μ΅μννκ³ μ€νμΌμνΈλ₯Ό λ μ½κ² κ΄λ¦¬νκ³ μ
λ°μ΄νΈνλ κ²μ
λλ€.
λ―Ήμ€μΈ(CSS μ μ²λ¦¬κΈ°μ λ λ€λ₯Έ μΌλ°μ μΈ κΈ°λ₯)κ³Ό λ¬λ¦¬ @extend
λ λ¨μν μ€νμΌμ 볡μ¬νμ¬ λΆμ¬λ£μ§ μμ΅λλ€. λμ CSS μ νμλ₯Ό μμ νμ¬ νμ₯νλ μ νμλ₯Ό ν¬ν¨μν΅λλ€. μ΄λ νΉν 볡μ‘ν μ€νμΌμ λ€λ£° λ λ ν¨μ¨μ μΈ CSS κ²°κ³Όλ¬Όμ λ§λ€μ΄λΌ μ μμ΅λλ€.
@extend μ¬μ©μ μ΄μ
- DRY CSS: μ¬λ¬ κ³³μμ λμΌν μ€νμΌμ λ°λ³΅νλ κ²μ νΌν μ μμ΅λλ€. μ΄λ CSSλ₯Ό λ μ½κ² μ½κ³ , μμ±νκ³ , μ μ§λ³΄μν μ μκ² λ§λλλ€. μλ§μ νμΌμ μ€νμΌλ§ κ·μΉμ΄ ν©μ΄μ Έ μλ μΉμ¬μ΄νΈλ₯Ό μ μ§λ³΄μνλ€κ³ μμν΄λ³΄μΈμ. μ μ μ€νμΌμ λ³κ²½νλ κ²μ μ
λͺ½μ΄ λ κ²μ
λλ€.
@extend
λ μ΄ λ¬Έμ λ₯Ό ν΄κ²°ν©λλ€. - μ μ§λ³΄μμ±: μ€νμΌμ μ
λ°μ΄νΈν΄μΌ ν λ, ν κ³³μμλ§ λ³κ²½νλ©΄ λ©λλ€. μ΄λ μ€λ₯μ λΆμΌμΉμ μνμ μ€μ¬μ€λλ€. λ²νΌ μ€νμΌμ΄ μΉμ¬μ΄νΈμ CSS μ 체μ λ°λ³΅μ μΌλ‘ μ μλ μλ리μ€λ₯Ό μκ°ν΄λ³΄μΈμ. λͺ¨λ λ²νΌμ ν¨λ©μ μ‘°μ ν΄μΌ νλ€λ©΄, λͺ¨λ μΈμ€ν΄μ€λ₯Ό μ°Ύμ μμ ν΄μΌ ν κ²μ
λλ€.
@extend
λ₯Ό μ¬μ©νλ©΄ κΈ°λ³Έ λ²νΌ μ€νμΌλ§ μμ νλ©΄ λͺ¨λ νμ₯ μ€νμΌμ΄ μλμΌλ‘ μ λ°μ΄νΈλ©λλ€. - μ±λ₯: κ²½μ°μ λ°λΌ
@extend
λ λ―Ήμ€μΈμ λΉν΄ λ μμ CSS νμΌμ μμ±ν μ μμ΅λλ€. λμΌν μ€νμΌμ μ¬λ¬ λ² λ³΅μ νλ κ²μ νΌνκΈ° λλ¬Έμ λλ€. μ΄λ λ λΉ λ₯Έ νμ΄μ§ λ‘λ μκ°κ³Ό ν₯μλ μΉμ¬μ΄νΈ μ±λ₯μΌλ‘ μ΄μ΄μ§λλ€. - μλ§¨ν± CSS:
@extend
λ₯Ό μ¬μ©νλ©΄ νμ΄μ§μ λ€λ₯Έ μμλ€ κ°μ λͺ νν κ΄κ³λ₯Ό μ€μ νμ¬ λ μ맨ν±ν CSSλ₯Ό λ§λ€ μ μμ΅λλ€. μλ₯Ό λ€μ΄, λͺ¨λ μλ¦Όμ λν κΈ°λ³Έ μ€νμΌμ λ§λ λ€μ λ€λ₯Έ μλ¦Ό μ ν(μ±κ³΅, κ²½κ³ , μ€λ₯)μ λν΄ νμ₯ν μ μμ΅λλ€.
@extendμ μ€μ©μ μΈ μμ
@extend
μ κ°λ ₯ν¨μ λͺ κ°μ§ μ€μ©μ μΈ μμ λ‘ μ€λͺ
ν΄ λ³΄κ² μ΅λλ€. μΈκΈ° μκ³ μ μ§μλλ CSS μ μ²λ¦¬κΈ°μΈ Sass ꡬ문μ μ¬μ©νκ² μ΅λλ€. κ·Έλ¬λ μ΄ κ°λ
μ Lessμ κ°μ λ€λ₯Έ μ μ²λ¦¬κΈ°λ μ€νμ μΈ @layer
at-ruleμ΄ μλ λ€μ΄ν°λΈ CSSμλ μ μ©λ μ μμ΅λλ€(μμΈν λ΄μ©μ λμ€μ λ€λ£Ήλλ€).
μμ 1: κΈ°λ³Έ λ²νΌ μ€νμΌ
λ€λ₯Έ λ²νΌ λ³νμ μ μ©νκ³ μΆμ κΈ°λ³Έ λ²νΌ μ€νμΌμ΄ μλ€κ³ κ°μ ν΄ λ΄ μλ€.
Sass:
.btn-primary {
background-color: #007bff;
color: #fff;
padding: 10px 20px;
border: none;
border-radius: 5px;
cursor: pointer;
}
.btn-secondary {
@extend .btn-primary;
background-color: #6c757d;
}
.btn-success {
@extend .btn-primary;
background-color: #28a745;
}
μ»΄νμΌλ CSS:
.btn-primary, .btn-secondary, .btn-success {
background-color: #007bff;
color: #fff;
padding: 10px 20px;
border: none;
border-radius: 5px;
cursor: pointer;
}
.btn-secondary {
background-color: #6c757d;
}
.btn-success {
background-color: #28a745;
}
μ»΄νμΌλ CSSκ° μ΄λ»κ² λμΌν κΈ°λ³Έ μ€νμΌμ 곡μ νλ μ νμλ€μ κ·Έλ£Ήννλμ§ μ£Όλͺ©νμΈμ. μ΄λ κ° λ²νΌ λ³νμμ κΈ°λ³Έ μ€νμΌμ 볡μ νλ κ²λ³΄λ€ λ ν¨μ¨μ μ λλ€.
μμ 2: νΌ μμ
@extend
λ₯Ό μ¬μ©νμ¬ νΌ μμμ μΌκ΄λ λͺ¨μκ³Ό λλμ λ§λ€ μ μμ΅λλ€.
Sass:
.form-control {
padding: 10px;
border: 1px solid #ccc;
border-radius: 4px;
font-size: 16px;
width: 100%;
}
.form-input {
@extend .form-control;
}
.form-textarea {
@extend .form-control;
height: 150px;
}
μμ 3: μλ¦Ό λ©μμ§
λ€μν μ νμ μλ¦Όμ κ³΅ν΅ μ€νμΌμ 곡μ νμ§λ§ κ³ μ ν μμμ΄λ μμ΄μ½μ κ°μ§ μ μμ΅λλ€.
Sass:
.alert {
padding: 15px;
margin-bottom: 20px;
border: 1px solid transparent;
border-radius: 4px;
}
.alert-success {
@extend .alert;
color: #3c763d;
background-color: #dff0d8;
border-color: #d6e9c6;
}
.alert-info {
@extend .alert;
color: #31708f;
background-color: #d9edf7;
border-color: #bce8f1;
}
.alert-warning {
@extend .alert;
color: #8a6d3b;
background-color: #fcf8e3;
border-color: #faebcc;
}
.alert-danger {
@extend .alert;
color: #a94442;
background-color: #f2dede;
border-color: #ebccd1;
}
@extend μ¬μ©μ μν λͺ¨λ² μ¬λ‘
@extend
λ κ°λ ₯ν λꡬμ΄μ§λ§, μ μ¬μ μΈ λ¬Έμ λ₯Ό νΌνκΈ° μν΄ μ μ€νκ² μ¬μ©νκ³ λͺ¨λ² μ¬λ‘λ₯Ό λ°λ₯΄λ κ²μ΄ μ€μν©λλ€.
- μλ§¨ν± μ νμμ ν¨κ» μ¬μ©νμΈμ:
@extend
λ μ§λμΉκ² ꡬ체μ μΈ μ νμ(μ:#content .article p
)보λ€λ μλ§¨ν± μ νμ(μ:.button
,.form-control
)μ ν¨κ» μ¬μ©ν λ κ°μ₯ μ μλν©λλ€. ꡬ체μ μΈ μ νμλ₯Ό νμ₯νλ©΄ 리ν©ν λ§νκΈ° μ΄λ €μ΄ κ°νκ² κ²°ν©λ CSSκ° λ μ μμ΅λλ€. - νμΌ κ° νμ₯μ νΌνμΈμ: λ€λ₯Έ CSS νμΌμ κ±Έμ³ μ νμλ₯Ό νμ₯νλ©΄ μ€νμΌ κ°μ κ΄κ³λ₯Ό μ΄ν΄νκΈ° λ μ΄λ €μμ§ μ μμ΅λλ€. μΌλ°μ μΌλ‘ νμ₯μ λμΌν νμΌμ΄λ λͺ¨λ λ΄μ μ μ§νλ κ²μ΄ κ°μ₯ μ’μ΅λλ€.
- μ νμ λͺ
μμ±μ μ μνμΈμ:
@extend
λ μ νμ λͺ μμ±μ μν₯μ μ€ μ μμ΅λλ€. νμ₯νλ μ νμλ νμ₯λλ μ νμμ λͺ μμ±μ μμλ°μ΅λλ€. μ£Όμνμ§ μμΌλ©΄ λλλ‘ μμμΉ λͺ»ν λμμΌλ‘ μ΄μ΄μ§ μ μμ΅λλ€. μλ₯Ό λ€μ΄, ID μ νμλ₯Ό νμ₯νλ©΄ νμ₯νλ ν΄λμ€λ λμΌν λμ λͺ μμ±μ κ°κ² λ©λλ€. - νλ μ΄μ€νλ μ νμ μ¬μ©μ κ³ λ €νμΈμ: νλ μ΄μ€νλ μ νμ(μ: Sassμ
%base-styles
)λ@extend
μ ν¨κ» μ¬μ©νκΈ° μν΄ νΉλ³ν μ€κ³λμμ΅λλ€. νμ₯λμ§ μλ ν μ΅μ’ CSSμλ μΆλ ₯λμ§ μμ΅λλ€. μ΄λ μμμ©μΌλ‘λ§ μ¬μ©νλ €λ κΈ°λ³Έ μ€νμΌμ μ μνλ λ° μ μ©ν©λλ€. - νμ₯μ λ¬ΈμννμΈμ: μ΄λ€ μ νμκ° μ΄λ€ κ²μ νμ₯νλμ§ λͺ ννκ² λ¬ΈμννμΈμ. μ΄λ κ² νλ©΄ λ€λ₯Έ κ°λ°μ(κ·Έλ¦¬κ³ λ―Έλμ μμ )κ° CSS μν€ν μ²λ₯Ό λ μ½κ² μ΄ν΄ν μ μμ΅λλ€.
- μ² μ ν ν
μ€νΈνμΈμ:
@extend
λ₯Ό μ¬μ©ν νμλ νμ CSSλ₯Ό μ² μ ν ν μ€νΈνμ¬ μ€νμΌμ΄ μ¬λ°λ₯΄κ² μ μ©λκ³ μμμΉ λͺ»ν λΆμμ©μ΄ μλμ§ νμΈνμΈμ. μ΄λ ν¬κ±°λ 볡μ‘ν νλ‘μ νΈμμ μμ ν λ νΉν μ€μν©λλ€.
@extendμ μ μ¬μ ν¨μ
μ₯μ μλ λΆκ΅¬νκ³ @extend
λ μ μ€νκ² μ¬μ©νμ§ μμΌλ©΄ λͺ κ°μ§ μ μ¬μ μΈ λ¬Έμ λ₯Ό μΌκΈ°ν μ μμ΅λλ€.
- λͺ
μμ± μ¦κ°: μμ μΈκΈνλ―μ΄
@extend
λ μ νμ λͺ μμ±μ μ¦κ°μμΌ λμ€μ μ€νμΌμ μ¬μ μνκΈ° λ μ΄λ ΅κ² λ§λ€ μ μμ΅λλ€. - μ¨κ²¨μ§ μ’
μμ±:
@extend
μ μν΄ μμ±λ μ νμ κ°μ κ΄κ³λ μ¨κ²¨μ Έ μμ΄ νλμ CSS μν€ν μ²λ₯Ό μ΄ν΄νκΈ° μ΄λ €μΈ μ μμ΅λλ€. - μλνμ§ μμ κ²°κ³Ό: μ¬λ¬ κ³³μμ μ¬μ©λλ μ νμλ₯Ό νμ₯νλ©΄ νμ₯νλ μ νμμ μΌμΉνλ λͺ¨λ μμμ μ€νμΌμ΄ μ μ©λλ―λ‘ μλνμ§ μμ κ²°κ³Όλ₯Ό μ΄λν μ μμ΅λλ€.
- μν μ’
μμ±:
@extend
λ‘ μν μ’ μμ±μ λ§λ€ μ μμ΅λλ€(μ: μ νμ Aκ° μ νμ Bλ₯Ό νμ₯νκ³ , μ νμ Bκ° μ νμ Aλ₯Ό νμ₯). μ΄λ CSS μ»΄νμΌ μ€ λ¬΄ν 루νλ‘ μ΄μ΄μ§ μ μμΌλ―λ‘ νΌν΄μΌ ν©λλ€. - λͺ
μμ± μ μ:
@extend
λ₯Ό λ¨μ©νκ³ `!important`λ₯Ό μμ λ‘κ² μ¬μ©νλ©΄ μΊμ€μΌμ΄λ© μ€νμΌμ μ λͺ½μ μ½κ² λ§λ€ μ μμ΅λλ€.@extend
λ₯Ό νμ©ν λ λͺ μμ±μ΄ λμμΈμ λ―ΈμΉλ μν₯μ κ³ λ €νλ κ²μ΄ μ€μν©λλ€.
@extend vs. λ―Ήμ€μΈ
@extend
μ λ―Ήμ€μΈμ λͺ¨λ CSS μ μ²λ¦¬κΈ°μμ λ ν¨μ¨μ μΈ CSSλ₯Ό μμ±νλ λ° λμμ΄ λλ κ°λ ₯ν κΈ°λ₯μ
λλ€. κ·Έλ¬λ μλ λ°©μκ³Ό μ¬μ© μ¬λ‘κ° λ€λ¦
λλ€.
@extend:
- ν μ νμμμ λ€λ₯Έ μ νμλ‘ μ€νμΌμ μμν©λλ€.
- CSS μ νμλ₯Ό μμ νμ¬ νμ₯νλ μ νμλ₯Ό ν¬ν¨ν©λλ€.
- κ²½μ°μ λ°λΌ λ μμ CSS νμΌμ μμ±ν μ μμ΅λλ€.
- κ΄λ ¨λ μμ κ°μ κΈ°λ³Έ μ€νμΌμ 곡μ νλ λ° κ°μ₯ μ ν©ν©λλ€.
λ―Ήμ€μΈ:
- νμ¬ μ νμμ μ€νμΌμ 볡μ¬νμ¬ λΆμ¬λ£μ΅λλ€.
- μΈμλ₯Ό μ λ¬νμ¬ μ€νμΌμ μ¬μ©μ μ μν μ μμ΅λλ€.
- κ΄λ²μνκ² μ¬μ©νλ©΄ λ ν° CSS νμΌμ΄ λ μ μμ΅λλ€.
- μ¬μ©μ μ μ κ°λ₯ν μ΅μ (μ: λ²€λ μ λμ¬, λ°μν μ€λ¨μ )μ΄ μλ μ¬μ¬μ© κ°λ₯ν μ½λ λΈλ‘μ λ§λλ λ° κ°μ₯ μ ν©ν©λλ€.
μΌλ°μ μΌλ‘ κ΄λ ¨ μμ κ°μ κΈ°λ³Έ μ€νμΌμ 곡μ νκ³ μ€νμΌμ μ¬μ©μ μ μν νμκ° μμ λ @extend
λ₯Ό μ¬μ©νμΈμ. μ¬μ©μ μ μ κ°λ₯ν μ΅μ
μ΄ μλ μ¬μ¬μ© κ°λ₯ν μ½λ λΈλ‘μ λ§λ€μ΄μΌ ν λ λ―Ήμ€μΈμ μ¬μ©νμΈμ.
μ΄ μμ λ₯Ό κ³ λ €ν΄λ³΄μΈμ:
// Using Extend
.base-button {
padding: 10px 20px;
border: none;
border-radius: 5px;
cursor: pointer;
}
.primary-button {
@extend .base-button;
background-color: blue;
color: white;
}
// Using a Mixin
@mixin button-styles($bg-color, $text-color) {
padding: 10px 20px;
border: none;
border-radius: 5px;
cursor: pointer;
background-color: $bg-color;
color: $text-color;
}
.secondary-button {
@include button-styles(green, white);
}
λ€μ΄ν°λΈ CSS λμ: μ€νμΌ μμμ λ―Έλ
@extend
λ μ£Όλ‘ CSS μ μ²λ¦¬κΈ°μ κ΄λ ¨μ΄ μμ§λ§, μ κ·Ό λ°©μκ³Ό νκ³λ λ€λ₯΄μ§λ§ μ μ¬ν κΈ°λ₯μ μ 곡νλ μλ‘μ΄ λ€μ΄ν°λΈ CSS κΈ°λ₯μ΄ λ±μ₯νκ³ μμ΅λλ€. κ·Έλ¬ν κΈ°λ₯ μ€ νλκ° @layer
at-rule (CSS μΊμ€μΌμ΄λ λ μ΄μ΄)μ
λλ€.
CSS μΊμ€μΌμ΄λ λ μ΄μ΄ (@layer)
μΊμ€μΌμ΄λ λ μ΄μ΄λ CSS μΊμ€μΌμ΄λμμ μ°μ μμλ₯Ό μ μ΄νλ λ°©λ²μ μ 곡ν©λλ€. @extend
λ₯Ό μ§μ λ체νλ κ²μ μλμ§λ§, μ μ¬ν μμ€μ μ€νμΌ μμ λ° κ΅¬μ±μ λ¬μ±νλ λ° μ¬μ©ν μ μμ΅λλ€.
@layer
μ μ£Όλ μμ΄λμ΄λ κ³ μ ν μ€νμΌ λ μ΄μ΄λ₯Ό μ μνκ³ μ μ© μμλ₯Ό μ μ΄νλ κ²μ
λλ€. μ΄λ₯Ό ν΅ν΄ νμ λ μ΄μ΄μ λ ꡬ체μ μΈ μ€νμΌμ μν΄ μ½κ² μ¬μ μλλ κΈ°λ³Έ μ€νμΌμ λ§λ€ μ μμ΅λλ€. μ΄λ νΉν νμ¬ λΌμ΄λΈλ¬λ¦¬λ 볡μ‘ν CSS μν€ν
μ²λ₯Ό λ€λ£° λ μ μ©ν©λλ€.
μμ :
@layer base {
.button {
padding: 10px 20px;
border: none;
border-radius: 5px;
cursor: pointer;
}
}
@layer theme {
.button {
background-color: blue;
color: white;
}
}
.special-button {
@layer theme;
background-color: red;
}
κ΅¬λ¬Έμ΄ λμΌνμ§λ μμ§λ§, μ΄ κ΅¬μ‘°λ 'base' μ€νμΌ λ μ΄μ΄μ 'theme' μ€νμΌ λ μ΄μ΄λ₯Ό λ§λλλ€. `theme`κ° `base` λ€μμ κ³μΈ΅νλκΈ° λλ¬Έμ κΈ°λ³Έ μ€νμΌμ μ¬μ μν©λλ€. μ°Έκ³ : μΊμ€μΌμ΄λ λ μ΄μ΄λ μμ§ λΉκ΅μ μλ‘μ°λ©° λͺ¨λ λΈλΌμ°μ μμ μμ ν μ§μλμ§ μμ μ μμ΅λλ€. νλ‘λμ μμ μ¬μ©νκΈ° μ μ νμ λΈλΌμ°μ νΈνμ±μ νμΈνμΈμ.
κ²°λ‘
CSS @extend
λ λ κΉ¨λνκ³ , μ μ§λ³΄μνκΈ° μ¬μ°λ©°, ν¨μ¨μ μΈ CSSλ₯Ό μμ±νκΈ° μν κ°λ ₯ν λꡬμ
λλ€. κ·Έ μ₯μ , μ¬μ© μ¬λ‘, λͺ¨λ² μ¬λ‘ λ° μ μ¬μ ν¨μ μ μ΄ν΄ν¨μΌλ‘μ¨ CSS μν€ν
μ²λ₯Ό κ°μ νκ³ μΉ κ°λ° μν¬νλ‘μ°λ₯Ό κ°μνν μ μμ΅λλ€. μΊμ€μΌμ΄λ λ μ΄μ΄μ κ°μ λ€μ΄ν°λΈ CSS λμμ΄ λ±μ₯νκ³ μμ§λ§, @extend
λ νΉν Sass λ° Lessμ κ°μ CSS μ μ²λ¦¬κΈ°λ‘ μμ
ν λ μ¬μ ν κ°μΉ μλ κΈ°μ μ
λλ€. νλ‘μ νΈμ μꡬ μ¬νμ μ μ€νκ² κ³ λ €νκ³ μ΄ κ°μ΄λμ μ€λͺ
λ μ§μΉ¨μ λ°λ₯΄λ©΄, μ μΈκ³ μ΄λμ μ²μ€μ΄ μλ μΉ νλ‘μ νΈλ₯Ό μν κ³ νμ§μ μ μ§λ³΄μ κ°λ₯ν CSSλ₯Ό λ§λ€κ³ μ€νμΌ μμμ λ§μ€ν°ν μ μμ΅λλ€.
λ μμ보기
- Sass λ¬Έμ: https://sass-lang.com/documentation/at-rules/extend
- Less λ¬Έμ: http://lesscss.org/features/#extend-feature
- CSS μΊμ€μΌμ΄λ λ μ΄μ΄: https://developer.mozilla.org/en-US/docs/Web/CSS/@layer