HTML5 데이터 - * 속성을 사용하여 더 나은 UX를 만드는 방법
JavaScript로 나중에 액세스하기 위해 특정 HTML 요소에 맞춤 데이터를 추가하고 싶습니까? HTML5가 출시되기 전에는 DOM과 관련된 맞춤 데이터를 저장하는 것이 매우 번거롭기 때문에 개발자는 비표준 속성을 도입하거나 오래된 setUserData () 메소드를 사용하여 문제를 해결하는 등 모든 종류의 불쾌한 해킹을 사용해야했습니다..
다행히도 HTML5가 새로운 글로벌 기능을 도입 했으므로 더 이상 그렇게 할 필요가 없습니다. 데이터-*
HTML 요소에 추가 정보를 포함시킬 수있는 속성 새로운 데이터-*
속성들 HTML을보다 확장 가능하게 만든다., 따라서 더 복잡한 앱을 만들 수있게 해줍니다., Ajax 호출 또는 서버 측 데이터베이스 쿼리와 같은 리소스 집약적 인 기술을 사용하지 않고도보다 정교한 사용자 경험을 생성 할 수 있습니다..
새로운 글로벌 속성에 대한 브라우저 지원은 모든 최신 브라우저에서 지원되므로 비교적 양호합니다 (IE8-10에서는 부분적으로 지원함).
구문 구문 데이터-*
속성
새로운 구문 데이터-*
속성은 aria-prefixed 속성의 속성과 유사합니다. 소문자 문자열을 해당 위치에 삽입 할 수 있습니다. *
기호. 또한 문자열 형식으로 각 속성에 값을 지정해야합니다..
예를 들어 회사 소개 각 직원이 근무하는 부서의 이름을 저장하고 저장하십시오. 추가 사항 외에 다른 작업을 수행 할 필요가 없습니다. 데이터 부서
맞춤 속성을 다음과 같은 방식으로 적절한 HTML 요소에 추가합니다.
- 존 도우
- 제인 도우
관습 데이터-*
속성은 수업
과 신분증
속성을 사용하여 모든 HTML 요소에서 사용할 수 있습니다. 만큼 추가 할 수도 있습니다. 데이터-*
속성을 원하는대로 HTML 태그에 추가하십시오. 위의 예에서 예를 들어 다음과 같은 새 맞춤 속성을 도입 할 수 있습니다. 데이터 사용자
직원 사용자 이름 저장.
- 존 도우
- 제인 도우
일반적으로 HTML 요소에 사용자 지정 특성을 추가하려면 항상 HTML 요소 앞에 접두사를 추가해야합니다. 데이터-
끈. 마찬가지로 다른 사람의 코드에서 데이터 접두사가 붙은 속성을 볼 때 해당 속성이 작성자가 소개 한 맞춤 속성이라는 것을 알 수 있습니다.
사용자 지정 특성을 사용하지 않을시기 및 사용시기
W3C는 커스텀을 정의한다. 데이터-*
다음과 같은 속성 :
“사용자 지정 데이터 특성은 적절한 특성이나 요소가없는 사용자 지정 데이터를 페이지 또는 응용 프로그램에 저장하기위한 것입니다..”
사용하는 것이 좋습니다. 데이터-*
속성들 저장할 데이터에 대해 다른 의미 적 속성을 찾을 수없는 경우.
스타일링 용도로만 사용하는 것이 가장 좋은 생각은 아닙니다. 수업
그리고 스타일
속성. HTML5에 의미 론적 속성이있는 데이터 유형을 저장하려는 경우 (예 : 날짜 시간
에 대한 속성 요소가 있으면 데이터 접두사가 붙은 속성 대신 사용하십시오.
주의해야 할 점은 데이터-*
속성은 페이지 또는 애플리케이션 전용, 이는 검색 엔진 봇 (bot) 및 외부 응용 프로그램과 같은 사용 도구에 의해 무시된다는 것을 의미합니다. 데이터 접두사가 붙은 속성은 HTML을 호스팅하는 사이트에서 실행되는 코드만으로 액세스 할 수 있습니다.
관습 데이터-*
속성은 Bootstrap 및 Zurb Foundation과 같은 프론트 엔드 프레임 워크에서 광범위하게 사용됩니다. 좋은 소식은 데이터 접두사가 붙은 애트리뷰트를 프레임 워크의 일부로 사용하려는 경우 JavaScript를 작성하는 방법을 알 필요가 없다는 것입니다. HTML 접두사를 HTML 코드에 추가하면됩니다. 사전 작성된 자바 스크립트 플러그인.
아래의 코드 스 니펫은 부트 스트랩의 버튼에 왼쪽의 툴팁을 추가합니다. 데이터 토글
그리고 데이터 배치
사용자 지정 특성을 지정하고 적절한 값을 할당.
목표 데이터-*
CSS를 사용한 속성
사용하지 않는 것이 좋지만 데이터-*
스타일 지정 용도로만 속성을 사용하는 경우 일반 속성 선택기를 사용하여 속한 HTML 요소를 선택할 수 있습니다. 특정 데이터 접두사가있는 속성이있는 각 요소를 선택하려면 CSS에서 다음 구문을 사용하십시오.
li [data-user] color : blue;
위 코드 스 니펫에 파란색으로 표시되는 사용자 이름은 아닙니다. 즉, 사용자 정의 속성에 저장된 모든 데이터가 보이지 않지만 사용자 이름에 포함 된 직원의 이름은 보이지 않습니다. 요소들 (예제에서) “존 도우” 과 “제인 도우”).
데이터 접두사가 붙은 속성이 특정 값을 갖는 요소 만 선택하려는 경우 다음 구문을 사용하십시오.
li [data-department = "IT"] border : 단색 파랑 1px;
일반 형제 조합 선택기 (예 : 일반 형제 결합 선택기)와 같이 더 복잡한 CSS 특성 선택기를 모두 사용할 수 있습니다.[data-value ~ = "foo"]
) 또는 와일드 카드 선택기 ([data-value * = "foo"]
), 데이터 접두사가 붙은 속성도 있습니다..
접속하다 데이터-*
JavaScript가있는 속성
사용자 정의에 저장된 데이터에 액세스 할 수 있습니다. 데이터-*
데이터 세트 속성 또는 jQuery를 사용하여 JavaScript로 속성 데이터()
방법.
바닐라 자바 스크립트
그만큼 데이터 세트
재산은 HTMLElement
인터페이스는 모든 HTML 태그에서 사용할 수 있음을 의미합니다. 그만큼 데이터 세트
속성은 모든 사용자 정의에 대한 액세스 권한을 부여합니다. 데이터-*
지정된 HTML 요소의 속성. 속성은 DOMStringMap
각각에 대해 하나의 항목을 포함하는 객체 데이터-*
속성.
우리의 회사 소개 페이지 예제를 통해 사용자 정의 속성을 쉽게 확인할 수 있습니다. “제인 도우” ~을 사용하여 데이터 세트
다음과 같은 방법으로
var jane = document.getElementById ( "jane"); console.log (jane.dataset); // DOMStringMap user : "janedoe", department : "IT"
당신은 반환 된 것을 볼 수 있습니다. DOMStringMap
~을 반대하다 데이터-
접두사는 속성의 이름에서 제거됩니다 (사용자
대신에 데이터 사용자
, 과 학과
대신에 데이터 부서
). 위 코드 스 니펫과 같은 모든 사용자 정의 속성 목록 대신 특정 데이터 접두어로 지정된 속성 값에 액세스하려는 경우 동일한 형식의 속성을 사용해야합니다..
특정 값을 검색 할 수 있습니다. 데이터-*
속성을 데이터 세트
재산. 이전에 언급했듯이, 데이터-
접두어를 속성 이름에서 가져온다. 그래서 Jane 's의 값에 접근하려면 데이터 사용자
속성을 사용하면 다음과 같이 할 수 있습니다.
var jane = document.getElementById ( "jane"); console.log (jane.dataset.user) // janedoe
jQuery 데이터()
방법
그만큼 데이터()
jQuery 메서드를 사용하면 데이터 접두사가 붙은 특성의 값을 가져올 수 있습니다. 여기서도 데이터-
올바르게 액세스하려면 속성 이름의 접두사를 사용하십시오. 이 예에서는 부서 이름과 함께 경고 메시지를 표시 할 수 있습니다. “여자” 다음 코드로 작동합니다.
$ ( "# jane") .hover (function () var department = $ ( "# jane") 데이터 ( "부서"); 경보 (부서););
그만큼 데이터()
메소드는 데이터 접두어로 지정된 속성의 값을 가져 오는 수단으로 작동 할뿐만 아니라 다음과 같은 방식으로 DOM 요소에 데이터를 첨부하기 때문에 신중하게 사용해야합니다.
var town = $ ( "# jane"). 데이터 ( "town", "New York");
jQuery로 첨부 한 추가 데이터 데이터()
메소드는 분명히 HTML 코드에 새로운 것으로 나타나지 않을 것입니다. 데이터-*
두 기술이 동시에 사용되는 경우 주어진 HTML 요소는 HTML과 jQuery를 사용하여 두 세트의 데이터를 저장합니다.
이 예에서 “여자” 새로운 맞춤 데이터를 얻었습니다 ("도시"
)를 jQuery와 함께 사용하지만이 새로운 키 - 값 쌍은 HTML에서 새로운 데이터 마을
속성. 두 가지 다른 방법으로 데이터를 저장하는 것은 가장 적은 말만하는 것이 아닙니다. 한 번에 두 가지 방법 중 하나만 사용하십시오..
접근성 및 데이터-*
속성
관례에 보관 된 데이터 데이터-*
속성은 비공개이며, 보조 기술은 액세스 할 수 없습니다. 사용 중지 된 사용자가 콘텐츠에 계속 액세스 할 수 있도록하려면 사용자에게 중요 할 수있는 콘텐츠를이 방법으로 저장하는 것은 좋지 않습니다..