HTML is designed with extensibility in mind for data that should be associated with a particular element but need not have any defined meaning. λ§ν¬ : MDN
HTMLμμ, νΉμ μμμ κ΄λ ¨ μλ λ°μ΄ν°λ₯Ό μ¬μ©ν μ μλ€.
λ¬Όλ‘ , κ·Έ λ°μ΄ν°λ κΌ κ·Έ μ΄λ€ μλ―Έλ₯Ό κ°μ§κ³ μμ νμλ μλ€.
μλ₯Ό λ€μ΄, λ²μλ ν μ€νΈλ₯Ό κ°μ§κ³ μλ μμκ° μλ€κ³ κ°μ ν΄λ³΄μ. μ΄ λ, νμ€ μμ±μΌλ‘λ μ μ ν μμ±μ΄ μ‘΄μ¬νμ§ μλλ€. μ΄λ΄ λ, data-* μμ±μ μ¬μ©ν μ μλ€.
1
<p data-translate="main.title">Title</p>
μ΄λ κ² μ¬μ©νλ©΄, μλ°μ€ν¬λ¦½νΈμμ ν΄λΉ μμμ ν μ€νΈλ₯Ό λ²μν μ μλ€.
1
2
const p = document.querySelector('p');
const text = p.dataset.translate;
μλ₯Ό λ€μ΄, λ²μ μ, μΈμ΄ λ³λ‘, λ€λ₯Έ CSS μ€νμΌμ μ μ©νκ³ μΆλ€κ³ κ°μ ν΄λ³΄μ. μ΄ λ, νμ€ μμ±μΌλ‘λ μΆ©λΆνμ§ μλ€. μ΄λ΄ λ, data-* μμ±μ μ¬μ©ν μ μλ€.
1
<p data-lang="en">Title</p>
μ΄λ κ² μ¬μ©νλ©΄, μλ°μ€ν¬λ¦½νΈμμ ν΄λΉ μμμ μΈμ΄λ₯Ό νμΈν μ μλ€.
1
2
const p = document.querySelector('p');
const lang = p.dataset.lang;
κ·Έλ¦¬κ³ , μ΄λ₯Ό ν΅ν΄, CSSμμ λ€λ₯Έ μ€νμΌμ μ μ©ν μ μλ€.
1
2
3
p[data-lang="en"] {
font-style: italic bold;
}
μλ₯Ό λ€μ΄, νΉμ μμμ ν μ€νΈλ₯Ό νμν λ, νΉμ λ¬Έμμ΄μ κ°μ‘°νκ³ μΆλ€κ³ κ°μ ν΄λ³΄μ. μ΄ λ, νμ€ μμ±μΌλ‘λ λΆμ μ νλ€. μ΄λ΄ λ, data-* μμ±μ μ¬μ©ν μ μλ€.
1
<p data-highlight="important">Title</p>
μ΄λ κ² μ¬μ©νλ©΄, μλ°μ€ν¬λ¦½νΈμμ ν΄λΉ μμμ ν μ€νΈλ₯Ό κ°μ‘°ν μ μλ€.
1
2
const p = document.querySelector('p');
const highlight = p.dataset.highlight;
κ·Έλ¦¬κ³ , μ΄λ₯Ό ν΅ν΄, CSSμμ λ€λ₯Έ μ€νμΌμ μ μ©ν μ μλ€.
1
2
3
p[data-highlight="important"] {
font-style: italic bold;
}
<p data-lang="en">Title</p>
, <p data-lang="en-US">Title</p>
, <p data-lang="en-US-123">Title</p>
, <p data-lang="en-us">Title</p>
, <p data-lang="en-us-123">Title</p>
<p data-lang="en">Title</p>
, <p data-lang='{"lang": "en"}'>Title</p>