tabindex는 element에 키보드 포커스를 주는 프로퍼티로 값에 따라 결과가 다르게 나타난다.
interactive content(대화형 콘텐츠)는 탑→다운의 코드 순서대로 탭 순서가 적용되고 tabindex”=0”가 default값이다.
반면, div와 같은 비대화형 콘텐츠에서는 키보드 포커스 속성이 적용되지 않는 것을 기본으로 tabindex=”-1”이 default값이다.
값에 따른 포커스 결과는 아래와 같다.
tabindex=”0” : 키보드 [tab]을 누르면 엘리먼트에 포커스를 줄 수 있고, 이는 비대화형 콘텐츠에도 적용이 가능하다.
tabindex=”-1” : 키보드 [tab]을 눌러도 엘리먼트의 포커스를 잃게 하며, 대화형 콘텐츠에서 포커스가 필요없을 때 해당 값을 적용하면 된다.
tabindex=”0`_32768” : 숫자가 낮을수록 우선순위가 높으며 포커스가 순차적으로 이루어져야 할 때 적용할 수 있다.
그렇다면 언제 포커스를 적용 혹은 해제해야 할까?
먼저, 포커스 적용이 필요할 때를 코드로 살펴보자.
<template v-for="(item, index) of state.itemList" :key="index">
<div tabindex="0" @click="$emit('click-item', option)">
{{ item }}
</div>
</template>
반대로, 포커스 해지가 필요할 때가 언제인지 코드를 확인해보자.
<a class="h3">회원가입, 필수 정보는 꼭 입력해주세요</a><br />
<a class="body-1">필수 정보는 꼭 입력해주세요.</a><br />
<a href="" tabindex="-1" class="body-1">필수 정보는 클릭하여 확인해주세요.</a><br />
<a href="" tabindex="-1" class="body-1">이름이 5자이상인 경우 클릭해주세요.</a><br />
<a href="" tabindex="-1" class="body-1">나이는 만나이 기준이며, 헷갈리는 경우 클릭해주세요.</a><br />
<a href="" tabindex="-1" class="body-1">이름은 실명 기준이며 외국인의 경우 클릭해주세요.</a><br />
<input type="text" name="name" placeholder="이름" class="border-2" />
<input type="number" name="age" placeholder="나이" class="border-2" />