HTML data-* Attributes

  • 4 minutes to read

본 문서는 HTML5에서 제공하는 사용자 정의 데이터 속성(data-*)의 개념과 활용 방법을 정리한 기술 문서입니다. data-* 속성은 표준 HTML 속성 외에 추가적인 정보를 요소에 포함시키기 위한 구조적이고 안전한 방법을 제공합니다.


1. 개요

HTML의 data-* 속성은 특정 요소에 개발자가 원하는 임의의 데이터를 저장할 수 있도록 제공되는 사용자 정의 속성(Custom Data Attribute)입니다.
속성 이름은 반드시 data-로 시작하며, 뒤에 작성되는 키는 목적에 따라 자유롭게 설정할 수 있습니다.

예:

<div data-user-id="42" data-role="admin"></div>

2. 사용 목적

2.1 표준 속성 외의 데이터 저장

HTML 표준 속성에 포함되지 않는 데이터를 구조적으로 보관하기 위해 사용됩니다. 다음과 같은 정보 저장에 적합합니다.

  • 사용자 ID
  • 항목 식별자
  • UI 상태 정보
  • API 요청에 필요한 값
  • 렌더링 옵션(애니메이션 속도, 테마 등)

2.2 JavaScript와의 데이터 연계

DOM 요소에 특정 데이터를 직접 저장해 두고 JavaScript에서 손쉽게 접근하거나 처리하기 위해 사용됩니다.

예:

<button data-item-id="59">Delete</button>

3. JavaScript에서의 접근

data-* 속성은 JavaScript에서 dataset 객체를 통해 접근할 수 있습니다.

예시 HTML:

<button id="btn" data-item-id="123" data-user-name="june"></button>

예시 JavaScript:

const btn = document.getElementById('btn');

btn.dataset.itemId;     // "123"
btn.dataset.userName;   // "june"

3.1 네이밍 규칙

하이픈(-)으로 연결된 속성 이름은 JavaScript에서 자동으로 camelCase 형태로 변환됩니다.

  • data-user-namedataset.userName
  • data-api-tokendataset.apiToken

4. JavaScript에서 값 변경

JavaScript에서 dataset 값을 변경하면 HTML 속성에도 즉시 반영됩니다.

btn.dataset.itemId = "999";
btn.dataset.userName = "park";

5. CSS에서의 활용

CSS 선택자를 이용하여 data-* 속성을 기반으로 스타일을 적용할 수 있습니다.

div[data-state="active"] {
    background-color: yellow;
}

6. 활용 사례

활용 분야 설명
UI 상태 제어 토글 상태, 페이지 번호, 활성/비활성 여부 등을 관리합니다.
이벤트 처리 이벤트 발생 시 필요한 데이터를 버튼이나 요소에 저장합니다.
Ajax 요청 항목 ID, 요청 URL 등의 파라미터를 요소에 보관합니다.
렌더링 옵션 스크롤 속도, 컴포넌트 동작 모드 등의 값을 지정합니다.
초기 DOM 스캔 라이브러리 또는 프레임워크에서 DOM 기반 초기화 시 활용합니다.

7. 주의 사항

7.1 민감 정보 저장 금지

HTML은 누구나 열람할 수 있으므로, 비밀번호, 인증 토큰, 개인 정보 등 민감한 정보는 절대 data-* 속성에 저장해서는 안 됩니다.

7.2 과도한 데이터 저장 자제

불필요한 데이터까지 모두 data-*로 관리할 경우 HTML 가독성 및 유지보수성이 저하될 수 있으므로 적절히 사용해야 합니다.


8. 정리

data-* 속성은 HTML 요소에 추가 정보를 저장하고 이를 JavaScript와 CSS에서 일관되게 활용할 수 있도록 돕는 표준화된 기능입니다. UI 상태 관리, 스크립트 연동, 컴포넌트 초기화 등 다양한 프런트엔드 환경에서 유용하게 사용됩니다.

더 깊이 공부하고 싶다면
DevLec에서는 실무 중심의 C#, .NET, ASP.NET Core, Blazor, 데이터 액세스 강좌를 단계별로 제공합니다. 현재 수강 가능한 강좌 외에도 더 많은 과정이 준비되어 있습니다.
DevLec.com에서 자세한 커리큘럼을 확인해 보세요.
DevLec 공식 강의
C# Programming
C# 프로그래밍 입문
프로그래밍을 처음 시작하는 입문자를 위한 C# 기본기 완성 과정입니다.
ASP.NET Core 10.0
ASP.NET Core 10.0 시작하기 MVC Fundamentals Part 1 MVC Fundamentals Part 2
웹 애플리케이션의 구조와 MVC 패턴을 ASP.NET Core로 실습하며 익힐 수 있습니다.
Blazor Server
풀스택 웹개발자 과정 Part 1 풀스택 웹개발자 과정 Part 2 풀스택 웹개발자 과정 Part 3
실무에서 바로 활용 가능한 Blazor Server 기반 관리자·포털 프로젝트를 만들어 봅니다.
Data & APIs
Entity Framework Core 시작하기 ADO.NET Fundamentals Blazor Server Fundamentals Minimal APIs
데이터 액세스와 Web API를 함께 이해하면 실무 .NET 백엔드 개발에 큰 도움이 됩니다.
VisualAcademy Docs의 모든 콘텐츠, 이미지, 동영상의 저작권은 박용준에게 있습니다. 저작권법에 의해 보호를 받는 저작물이므로 무단 전재와 복제를 금합니다. 사이트의 콘텐츠를 복제하여 블로그, 웹사이트 등에 게시할 수 없습니다. 단, 링크와 SNS 공유, Youtube 동영상 공유는 허용합니다. www.VisualAcademy.com
박용준 강사의 모든 동영상 강의는 데브렉에서 독점으로 제공됩니다. www.devlec.com