Data Attributes in HTML

HTMLμ—μ„œ λ³€μˆ˜λ₯Ό μ‚¬μš©ν•  수 μžˆλ‹€κ΅¬μš”?

Posted by Seohyun Park, Aileen on November 05, 2023 · 4 mins read
HTML

πŸš€ Data-set Attribute in HTML

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-* 속성을 μ‚¬μš©ν• κΉŒ?

- 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;
}


data-* μ†μ„±μ˜ 이름 κ·œμΉ™

  • data- λ’€μ—λŠ”, μ†Œλ¬Έμž, λŒ€λ¬Έμž, 숫자만 μ‚¬μš©ν•  수 μžˆλ‹€.
  • data- λ’€μ—λŠ”, λŒ€μ‹œ(-)λ₯Ό μ‚¬μš©ν•  수 μžˆλ‹€.
  • data- λ’€μ—λŠ”, λŒ€μ‹œ(-)λ₯Ό μ‚¬μš©ν•  수 μžˆμ§€λ§Œ, λŒ€μ‹œ(-) λ’€μ—λŠ”, μ†Œλ¬Έμž, λŒ€λ¬Έμž, 숫자만 μ‚¬μš©ν•  수 μžˆλ‹€.
  • data- λ’€μ—λŠ”, λŒ€μ‹œ(-)λ₯Ό μ‚¬μš©ν•  수 μžˆμ§€λ§Œ, λŒ€μ‹œ(-) λ’€μ—λŠ”, λŒ€μ‹œ(-)λ₯Ό μ‚¬μš©ν•  수 μ—†λ‹€. ex) <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>


data-* μ†μ„±μ˜ κ°’ κ·œμΉ™

  • data-* μ†μ„±μ˜ 값은, 항상 μœ νš¨ν•œ HTML, ν˜Ήμ€ XML, ν˜Ήμ€ JSON λ¬Έμžμ—΄μ΄μ–΄μ•Ό ν•œλ‹€. ex) <p data-lang="en">Title</p>, <p data-lang='{"lang": "en"}'>Title</p>