Post

데이터 속성 이해하기

HTML5의 데이터 속성 이해하기

HTML5부터 도입된 데이터 속성 (data attribute) 은 특정 데이터를 HTML 요소에 저장할 수 있는 방법을 제공합니다.
‘data-‘로 시작하는 이 속성은 웹 개발에서 매우 유용하게 사용됩니다.
이번 글에서는 데이터 속성이 무엇인지, 왜 사용하는지, 그리고 어떻게 사용하는지에 대해 알아보겠습니다.

데이터 속성이란?


데이터 속성은 HTML 요소에 사용자 정의 데이터를 저장할 수 있는 방법입니다.
속성 이름은 ‘data-‘로 시작해야 하며, 그 뒤에 임의의 이름을 붙여 사용할 수 있습니다.
예를 들어, data-user-id, data-role 등이 있습니다.
데이터 속성은 JavaScript를 통해 쉽게 접근하고 조작할 수 있습니다.


데이터 속성의 예

1
<div data-user-id="12345" data-role="admin">Hello, User!</div>


위 예제에서 div 요소에는 data-user-iddata-role이라는 두 개의 데이터 속성이 추가되어 있습니다.
이러한 데이터 속성은 JavaScript를 사용하여 접근하고 조작할 수 있습니다.


데이터 속성의 사용 이유


데이터 속성을 사용하는 주된 이유는 특정 데이터를 DOM 요소에 저장해두기 위함입니다. 이를 통해 다음과 같은 이점을 얻을 수 있습니다


  1. 유연한 데이터 저장: 데이터 속성을 사용하면, HTML 요소에 추가적인 데이터를 유연하게 저장할 수 있습니다.
    이는 페이지 로딩 시 서버로부터 데이터를 가져올 필요 없이, 필요한 데이터를 요소 자체에 저장해둘 수 있음을 의미합니다.

  2. JavaScript와의 상호작용: JavaScript를 사용하여 데이터 속성에 저장된 값을 쉽게 접근하고 조작할 수 있습니다.
    이를 통해 동적인 웹 페이지를 쉽게 만들 수 있습니다.

  3. 스타일링: 데이터 속성의 값에 따라 CSS를 사용하여 요소를 동적으로 스타일링할 수 있습니다.


데이터 속성 사용 방법


HTML에서 데이터 속성 추가

데이터 속성을 HTML 요소에 추가하는 방법은 매우 간단합니다. ‘data-‘로 시작하는 속성 이름을 지정하고, 그 값으로 데이터를 저장합니다.

1
<button data-product-id="1001" data-price="29.99">Buy Now</button>


위 예제에서 button 요소에는 data-product-iddata-price라는 두 개의 데이터 속성이 추가되어 있습니다.


JavaScript로 데이터 속성 접근

JavaScript를 사용하여 데이터 속성에 접근하고 조작할 수 있습니다. 이를 위해 dataset 속성을 사용합니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<script>
    // HTML 요소를 선택합니다.
    var button = document.querySelector('button');

    // 데이터 속성에 접근합니다.
    var productId = button.dataset.productId;
    var price = button.dataset.price;

    console.log('Product ID:', productId); // Product ID: 1001
    console.log('Price:', price); // Price: 29.99

    // 데이터 속성 값을 변경합니다.
    button.dataset.price = '24.99';
    console.log('Updated Price:', button.dataset.price); // Updated Price: 24.99
</script>


CSS로 데이터 속성 사용

CSS에서는 attribute selector를 사용하여 데이터 속성에 따라 스타일을 지정할 수 있습니다.

1
2
3
4
5
6
7
8
9
10
<style>
    /* data-role이 'admin'인 요소를 스타일링합니다. */
    [data-role="admin"] {
        color: red;
        font-weight: bold;
    }
</style>

<div data-role="admin">Admin User</div>
<div data-role="user">Regular User</div>

위 예제에서 data-role 속성이 admindiv 요소는 빨간색 글꼴과 굵은 글꼴로 스타일링됩니다.


실용적인 예제


사용자 인터페이스

데이터 속성은 사용자 인터페이스(UI)를 동적으로 업데이트하는 데 유용합니다.
예를 들어, 제품 목록에서 각 제품의 ID와 가격을 저장하고, 이를 기반으로 장바구니에 제품을 추가할 수 있습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<ul>
    <li data-product-id="101" data-price="19.99">Product 1</li>
    <li data-product-id="102" data-price="29.99">Product 2</li>
    <li data-product-id="103" data-price="39.99">Product 3</li>
</ul>

<script>
    var products = document.querySelectorAll('li');

    products.forEach(function(product) {
        product.addEventListener('click', function() {
            var productId = product.dataset.productId;
            var price = product.dataset.price;
            alert('Product ID: ' + productId + '\nPrice: ' + price);
        });
    });
</script>


위 예제에서 각 li 요소에는 data-product-iddata-price 데이터 속성이 저장되어 있습니다.
사용자가 제품을 클릭하면, 해당 제품의 ID와 가격이 알림창에 표시됩니다.



결론


HTML5의 데이터 속성은 HTML 요소에 추가적인 데이터를 저장하고, 이를 JavaScript와 CSS를 통해 쉽게 접근하고 조작할 수 있는 강력한 도구입니다.
데이터 속성을 사용하면, 웹 애플리케이션의 유연성과 동적 기능을 크게 향상시킬 수 있습니다.

This post is licensed under CC BY 4.0 by the author.