거의 막차를 탄 갑작스러운 느낌으로 <main> element가 HTML5 확장 spec의 draft 문서에 추가되었으며, 조만간 HTML 5.1 spec에도 추가될 예정이란다.
이름에서 알 수 있듯이, main
element는 문서 혹은 앱의 주요 내용을 감싸는 용도로 사용되는데, 과거에 주로 <div> element에다 id 값으로 ‘content’ 혹은 ‘main’을 줘서 주 내용을 감쌌던 것을 공식적인 main
element로 대체하면 되겠다. 이렇게 하면 지원 브라우저에선 WAI-ARIA landmark 중 하나인 role=main으로 자동 인식된다.
사용할 때 주의할 점은, main
element는 sectioning content가 아니므로 문서 outline에 어떠한 영향도 끼치지 않으며, 문서에는 하나의 main
element만 추가할 수 있고 또 article
, aside
, footer
, header
혹은 nav
element 안에 존재할 수 없다.
아래는 spec 문서에 예시된 사용 예.
<!-- other content -->ApplesThe apple is the pomaceous fruit of the apple tree.Red DeliciousThese bright red apples are the most common found in manysupermarkets.......Granny SmithThese juicy, green apples make a great filling forapple pies.......<!-- other content -->
재밌는 것은, 얼마 전 HTML5 Doctor에서 WHATWG의 HTML 문서 에디터인 Ian Hickson씨를 인터뷰한 내용을 실었는데, 여기서 Hickson씨는 분명 main
element를 새로 추가해서 얻을 이득이 그 비용에 비해 별로 크지 않다는 생각을 밝혔다는 점이다. 하지만 실 사이트 개발자들 사이에서 자주 사용하는 <div id="main">
코드 패턴을 자연스럽게 흡수하면서 덩달아 자동으로 접근성도 함께 향상할 수 있다는 점에서 많은 개발자로부터 이번 main
element의 추가를 반기는 분위기이다.
지금 당장 사용하기에는 아직 약간의 이른 감이 있는데, 다수의 브라우저가 role mapping을 지원할 때까지 당분간은 다음처럼 ARIA role=”main” 속성을 함께 사용해야 한다.
...
그리고, 옛 버전의 IE(IE 6,7,8)에게 새 HTML5 elements를 인식시켜주려고 사용하는 스크립트인 html5shiv에는 아직 공식 배포 스크립트에 main
element가 추가되지 않았는데, 조만간 추가될 예정이다.
“HTML5의 main element”에 달린 3개의 댓글
[…] HTML5의 main element […]
계륵…같네요. 하지만 역시 작업자 입장에서 id=”main(or content)” + role=”main” 을 한방에 해결해준다는 점에서는 좋네요 🙂 article 쓰자니 덜 범용적이고, div 쓰자니 뭔가 허전(?)하고, section은 너무 많이 쓰는 것 같고… 그런 기분에서 탈출시켜주려나요.
main element는 문서 outline에 관여하지 않기 때문에, 크게 신경 쓸 일 없이 그냥 주요 문서 내용을 뭉뚱그려 감싸는 용도로, 말씀하신 것처럼 과거 뭔가 허전하면서도 찜찜했던 div 대신에 쓰면 좋을 것 같습니다. 🙂