웹접근성 레이어팝업 tabindex

by hohoya33

HTML

<h3>[tabindex="0"]</h3>
<div tabindex="0">div같은 요소도 초점을 받을 수 있습니다. 초점은 마크업 순서에 맞게 이동 됩니다.</div>
<hr>

<h3>[tabindex="-1"]</h3>
<div tabindex="-1">키보드 탭키를 눌러서 초점을 받을 수 없습니다. 탭키를 누르면 해당 요소는 건너뜁니다. 자바스크립트 focus() 메서드 사용하여 요소에 포커스 가능 합니다.</div>
<br>
<button class="btn_focus">focus() 메서드</button>
<hr>

<h3>[tabindex="5"]</h3>
<div tabindex="5">가장 먼저 초점을 받을 수 있습니다. 그러나 자연스러운 탭 순서를 방해합니다. (0 보다 큰 tbaindex 값은 안티패턴으로 간주)</div>

CSS

body{color:#fff;background:#282c34}
:focus{outline:4px solid #FF0000}
h3{margin-bottom:0;padding-left:20px;text-align:left;color:#13daec;}
div{padding-left:20px;}

button{
  margin-left: 20px;
  border: none;
  border-radius: 2px;
  display: inline-block;
  height: 36px;
  line-height: 36px;
  padding: 0 16px;
  vertical-align: middle;
  font-size: 14px;
  text-decoration: none;
  color: #fff;
  background-color: #26a69a;
  text-align: center;
  letter-spacing: .5px;
  cursor: pointer
}

JavaScript

// 해당요소를 선택하는 쿼리이기 때문에 해당 요소에 포커스 메서드를 호출
document.querySelector('.btn_focus').addEventListener('click', function() {
	document.querySelector('[tabindex="-1"]').focus();
});