LLMs 및 vibe 코더를 위한 웹 인터페이스 가이드라인 체크리스트!

발행: (2026년 1월 17일 오전 03:40 GMT+9)
9 min read
원문: Dev.to

Source: Dev.to

위에 제공된 링크 외에 번역할 텍스트가 포함되어 있지 않습니다. 번역이 필요한 전체 내용(마크다운 형식 포함)을 제공해 주시면 한국어로 번역해 드리겠습니다.

  • 키보드가 모든 곳에서 작동함 (WAI‑ARIA 패턴)
  • 명확한 포커스 링 (:focus-visible)
  • 포커스 관리 (트랩, 이동, 반환)
  • 시각적 및 클릭 대상 일치 (데스크톱 ≥ 24 px, 모바일 ≥ 44 px)
  • 모바일 입력 폰트 ≥ 16 px
  • 확대/축소 절대 비활성화 금지
  • 하이드레이션 안전 입력
  • 붙여넣기 차단 금지
  • 로딩 중인 버튼은 표시기 + 원래 라벨 표시
  • 최소 로딩 지속 시간 (150‑300 ms 지연, 300‑500 ms 최소)
  • URL을 상태로 사용 (공유 가능, 새로 고침 가능)
  • 롤백 가능한 낙관적 업데이트
  • 추가 입력 및 로딩 상태에 대한 줄임표
  • 파괴적 행동 확인
  • 컨트롤에 touch-action: manipulation 적용
  • -webkit-tap-highlight-color 설정
  • 넉넉한 클릭 대상, 예측 가능한 상호작용
  • 첫 툴팁 지연, 동료 요소는 지연 없음
  • 모달/드로어에 overscroll-behavior: contain 적용
  • 뒤로/앞으로 이동 시 스크롤 위치 유지
  • 데스크톱에서 단일 입력 자동 포커스 (모바일은 드물게)
  • 사각지대 없음 – 인터랙티브 요소가 인터랙티브하게 보임
  • 모든 요소에 딥링크 적용 (필터, 탭, 패널)
  • 깔끔한 드래그 상호작용 (선택 비활성화, inert 사용)
  • 링크는 <a> 또는 <button> (버튼/디브가 아님)
  • 비동기 업데이트 알리기 (aria-live)
  • 로케일 인식 키보드 단축키
  • prefers-reduced-motion 존중

애니메이션

  • CSS > Web Animations API > JS 라이브러리를 선호
  • GPU 가속 속성 (transform, opacity)
  • 명확성 또는 즐거움을 위해서만 애니메이션 적용
  • 이징은 주제에 맞게 선택
  • 사용자 입력에 의해 중단 가능
  • 자동 재생이 아니라 입력에 의해 구동
  • 올바른 transform-origin 사용
  • 절대 transition: all 사용 금지 (명시적인 속성만)
  • <svg> 래퍼에 transform-box: fill-box와 함께 SVG 변환 적용

Layout

  • 광학 정렬 (± 1 px 조정)
  • 의도된 정렬 (그리드, 기준선, 가장자리, 중앙)
  • 텍스트/아이콘 결합에서 대비 균형 맞추기
  • 모바일, 노트북, 초광각 화면에서 테스트
  • 안전 영역(노치, 인셋) 존중
  • 과도한 스크롤바 금지
  • 브라우저가 크기를 조정하도록 함 (JS보다 flex/grid 사용)
  • 인라인 도움말을 먼저, 툴팁은 나중에
  • 안정적인 스켈레톤이 최종 콘텐츠를 반영
  • 정확한 <title>이 컨텍스트를 반영
  • 막다른 길 없음(다음 단계 또는 복구)
  • 모든 상태 설계(빈 상태, 희박, 밀집, 오류)
  • 곱슬 따옴표(“ ”) 사용
  • 고아/고아줄 방지
  • 비교를 위한 표 형식 숫자 사용
  • 중복 상태 표시(색상만 사용 금지)
  • 아이콘에 텍스트 라벨 부여
  • 라벨이 숨겨져 있어도 접근 가능한 이름 존재
  • 줄임표 문자() 사용, 세 개의 마침표는 사용하지 않음
  • 헤딩에 scroll-margin-top 적용
  • 짧은, 보통, 긴 콘텐츠를 부드럽게 처리
  • 로케일 인식 형식(날짜, 숫자, 통화)
  • 언어는 Accept-Language로 판단, IP/GPS 사용 금지
  • 정확한 aria-label, aria-hidden 사용
  • 아이콘 전용 버튼에 aria-label 부여
  • ARIA보다 시맨틱 우선(네이티브 요소 먼저)
  • 계층적 <nav> + 스킵 링크
  • 로고 오른쪽 클릭으로 브랜드 리소스 제공
  • 붙어 있는 용어에 비분리 공백( , &#x2060;) 사용
  • Enter 키로 제출(단일 입력 또는 마지막 컨트롤)
  • 텍스트 영역: ⌘/⌃ + Enter 제출, Enter = 새 줄
  • 모든 컨트롤에 <label> 또는 연관성 부여
  • 라벨 클릭 시 해당 컨트롤에 포커스
  • 제출은 진행 중일 때까지 활성화(스피너 + 멱등 키)
  • 타이핑을 차단하지 않음(검증은 하되 제한은 하지 않음)
  • 사전 비활성화 제출 금지(표면 검증)
  • 체크박스/라디오에 사각지대 없음
  • 필드 옆에 오류 표시, 제출 시 첫 오류에 포커스
  • autocomplete 및 의미 있는 name 설정
  • 이메일, 코드, 사용자명에 대해 맞춤법 검사 비활성화
  • 올바른 typeinputmode 사용
  • 플레이스홀더는 줄임표로 끝나고 예시 표시
  • 저장되지 않은 변경 사항이 있을 때 네비게이션 전 경고
  • 비밀번호 관리자 및 2FA 호환
  • 인증이 아닌 필드에서 비밀번호 관리자를 트리거하지 않음
  • 입력값의 뒤쪽 공백 제거
  • <input>background-colorcolor 설정

Performance

  • iOS 저전력 모드 및 macOS Safari 테스트
  • 프로파일링 시 확장 프로그램 비활성화
  • 재렌더링 추적 (React DevTools, React Scan)
  • 프로파일링 시 CPU/네트워크 제한
  • 레이아웃 작업 최소화 (읽기/쓰기 배치)
  • POST/PATCH/DELETE<link rel="preload"> 자산/CDN 도메인용
  • 중요한 폰트 사전 로드
  • 폰트 서브셋(unicode-range) 적용
  • 무거운 작업을 Web Workers에서 수행
  • 레이어드 그림자(ambient + direct)
  • 선명한 테두리 + 그림자
  • 중첩 반경(자식 ≤ 부모, 동심)
  • 비중립 배경에서 색조 일관성 유지
  • 색맹 친화적인 차트 팔레트
  • 대비를 위해 WCAG 2보다 APCA 선호
  • 상호작용 시 대비 증가
  • <meta name="color-scheme"> 설정
  • 다크 테마를 위해 <html>color-scheme: dark 설정
  • 텍스트 노드가 아니라 래퍼를 애니메이션(또는 translateZ(0))
  • 그라디언트 밴딩 방지(배경 이미지 사용)

Copywriting & Content

  • 능동태
  • 헤딩/버튼: 타이틀 케이스 (시카고 스타일)
  • 마케팅 페이지: 문장형 대소문자
  • 명확하고 간결하게
  • 적절할 때 “and”보다 “&” 사용
  • 행동 지향 언어
  • 명사는 일관되게 유지
  • 2인칭 사용, 1인칭 금지
  • 일관된 플레이스홀더 사용 (예: YOUR_API_TOKEN_HERE, 0123456789)
  • 개수는 숫자 사용
  • 통화 형식 일관성 유지 (소수점 0자리 또는 2자리, 혼용 금지)
  • 숫자와 단위 사이에 공백 (10 MB,   사용)
  • 기본적으로 긍정적인 언어 사용
  • 오류 메시지는 종료를 안내
  • 모호성 방지 (구체적인 라벨 사용)
Back to Blog

관련 글

더 보기 »

왜 우리는 모니터링 통계를 공개했는가

대부분의 모니터링 서비스는 숫자를 숨깁니다. 우리는 반대로 하기로 했습니다. 여기에서 Boop이 현재 어떻게 수행되고 있는지 정확히 볼 수 있습니다 – 분당 체크 수, 지역…