CSS · 19 포커스와 입력 상태
단계: 상태·위치·접근성 · 편집 가능한 예제 · 저장 ID: css-step-19
목표와 학습 후 역량
- 모든 조작에서 포커스가 보이고 잘리지 않는다.
- checked·disabled·invalid 상태 3개를 기록한다.
선수 지식
18단위 「색상과 대비」의 결과물과 실험 기록
핵심 개념과 설명
포커스 표시
:focus-visible은 입력 방식 등의 판단에 따라 포커스 표시를 조절합니다. outline 제거 후 대체 표시가 없으면 위치를 잃습니다.
상태 선택자
disabled·checked·invalid는 서로 다른 상태를 나타냅니다. 오류 표시가 입력 시작 전부터 과도하지 않은지 확인합니다.
실습 준비
예제 화면의 실행 범위 안내를 먼저 확인하세요. 다음은 과제를 별도 프로젝트로 확장할 때의 준비 환경입니다. 별도 로컬 프로젝트에서 직접 구현하고 브라우저 개발자 도구로 확인하세요. 별도 폴더의 index.html에 콘텐츠를 만들고 link rel="stylesheet"로 실습 CSS를 연결하세요. 개발자 도구에서 뷰포트·계산 스타일·성능 기록을 확인합니다.
연결된 예제는 출발점입니다. 아래 과제 전체가 완성된 코드는 아니며, 예제의 지원 범위를 넘는 작업은 별도 프로젝트에서 수행하세요.
실습 과제
- index.html에 키보드 이동, 체크 전환, 잘못된 입력 조건의 콘텐츠를 준비하고 states.css를 연결하세요.
- 버튼·링크·입력에 focus-visible과 상태 스타일을 작성하고 Tab으로 탐색하세요.
- 키보드 이동, 체크 전환, 잘못된 입력 조건으로 실행하세요. 확인할 결과: 모든 조작에서 포커스가 보이고 잘리지 않는다. checked·disabled·invalid 상태 3개를 기록한다. 예상과 실제 결과는 구분해 기록하세요.
관찰할 변수
| 변수 | 기준 조건 | 바꿀 조건 | 예상할 변화·검증 가설 |
|---|---|---|---|
| outline | 없음 | 2px 실선과 offset | 실행 전 가설: 키보드 위치를 식별하기 쉬워질 것이다. 다른 조건은 고정하고 실행 후 실제 결과를 따로 기록합니다. |
표의 예상은 측정 결과가 아닙니다. 한 번에 한 조건만 바꾸고 실제 결과가 다르면 원인을 기록하세요.
완료 조건
- 모든 조작에서 포커스가 보이고 잘리지 않는다.
- checked·disabled·invalid 상태 3개를 기록한다.
자가 점검
- hover가 없어도 상태를 알 수 있나요?
- 부모 overflow가 outline을 자르나요?
공식 참고
연결된 예제와 실행 범위
실제 CSS 문서를 렌더하고 DOM 치수와 계산 스타일을 검사합니다. Shadow DOM에서 문서 body/html 선택자를 범위화합니다. @media는 외부 미리보기 viewport에 반응하며 폭 슬라이더는 컨테이너만 변경합니다. 네트워크·폼 이동·iframe 실행은 제한됩니다.
원본 코드·기록은 자동으로 덮어쓰지 않습니다. 기존 예제를 초기화할 때도 필기는 유지됩니다.