6P by neo 2일전 | ★ favorite | 댓글과 토론
  • Chrome 137부터 새롭게 도입된 CSS reading-flowreading-order 속성시각적 레이아웃과 키보드 포커스 순서가 불일치하는 문제를 해결함
  • 기존 flex/grid 레이아웃은 DOM 순서와 시각적 순서가 어긋날 수 있어, 접근성 도구나 키보드 탐색 시 사용자 혼란 유발
  • reading-flow는 시각적 레이아웃 순서를 기준으로 포커스 이동을 제어하고, reading-order는 항목별 수동 순서 지정 가능
  • 기존 tabindex 방식보다 직관적이고 접근성에 유리, 레이아웃 내부 탐색을 로컬로 스코프화함
  • 다양한 예제 및 실습은 chrome.dev에서 제공됨

reading-flow란?

  • 레이아웃에서 요소들이 탐색 순서에 따라 포커스를 받을 순서를 지정
  • 기본값: normal → 기존 DOM 순서 그대로
  • 사용 예시:
    • Flex: flex-visual, flex-flow
    • Grid: grid-rows, grid-columns, grid-order
    .box {  
      reading-flow: flex-visual;  
    }  
    
  • DOM 순서가 아닌 시각적 위치 기반으로 포커스 이동 가능

reading-order: 수동 순서 지정

  • reading-flow: source-order 설정 시 각 항목에 숫자 순서 부여 가능
    .wrapper {  
      reading-flow: source-order;  
    }  
    .top {  
      reading-order: -1;  
    }  
    
  • 지정된 순서 값에 따라 탐색 순서 우선순위 조정 가능

기존 tabindex 방식과의 비교

  • tabindex는 접근성 도구와의 비일치 문제 발생 우려
  • 중복 값이나 외부 요소 간 포커스 점프 문제 발생
  • reading-flow는 포커스 스코프를 정의해 내부 탐색을 제한하고 양방향 탐색을 명확히 함
  • 긍정 tabindex는 무시되며, 내부 요소엔 여전히 개별적으로 tabindex 설정 가능

요약

  • reading-flow레이아웃 중심의 포커스 순서 지정을 위한 최신 접근 방식
  • 시각적 질서와 키보드 탐색 일치접근성 향상 및 사용자 혼란 방지
  • 실무 적용 시, 기존 tabindex보다 더 예측 가능하고 일관된 경험 제공