diff --git a/.Jules/palette.md b/.Jules/palette.md index 8a7cf4c..eee4eaa 100644 --- a/.Jules/palette.md +++ b/.Jules/palette.md @@ -21,3 +21,7 @@ ## 2024-07-15 - Expand clickable area of project cards **Learning:** Using an anchor tag to wrap an entire card (block-level element) can result in verbose and confusing screen reader output. However, restricting the clickable area to just the title makes the UI harder to interact with (violating Fitts's Law). **Action:** Apply `position: relative` to the card container and use a `::after` pseudo-element with `position: absolute; inset: 0;` on the title's anchor tag. This expands the clickable area to the whole card while keeping semantic and accessible HTML structure. + +## 2026-08-10 - Add tactile feedback to buttons +**Learning:** Found that buttons (`.button`, `.language-switch button`) lacked an `:active` state. Without visual feedback upon clicking (tactile feedback), users might wonder if their interaction registered, especially before network or async operations complete. +**Action:** Always add an `:active` state with a slight `transform: scale(0.98)` to buttons to mimic real-world physical buttons and provide immediate interaction feedback. diff --git a/CHANGELOG.md b/CHANGELOG.md index 2144e85..c165b58 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,7 @@ # CHANGELOG ## [Unreleased] +- **UX/접근성 개선**: 버튼(`.button`, `.language-switch button`)에 `:active` 상태와 `transform: scale()` 트랜지션을 추가하여 사용자가 클릭할 때 즉각적인 시각적 피드백(Tactile feedback)을 제공하도록 개선했습니다. - **성능 개선**: `.skip-link` 애니메이션을 `top`에서 `transform: translateY()`로 변경하여 전환 중 레이아웃 재계산을 줄일 수 있도록 했습니다. 실제 효과는 브라우저별 측정 대상입니다. - **렌더링 힌트 정합성**: 첫 화면의 eager 이미지와 단일 LCP 후보에서 강제 `decoding="async"`를 제거해 HTML 표준의 기본 `auto` 판단에 맡기고, 지연 로드 이미지에는 비동기 디코딩 힌트를 유지했습니다. 정적 테스트가 eager, lazy, LCP 후보 집합의 존재와 조합을 검증하며, 실제 LCP 효과는 배포 후 실측 대상으로 유지합니다. - **UX/접근성 개선**: 프로젝트 카드의 클릭 영역을 카드 전체로 확장하여 사용자 편의성을 높였습니다. 태그를 확장하는 대신 가상 요소(pseudo-element) 겹침 방식을 사용하여 스크린 리더 접근성을 유지했습니다. diff --git a/styles.css b/styles.css index f7697d8..f76784b 100644 --- a/styles.css +++ b/styles.css @@ -108,7 +108,11 @@ a { font-size: 13px; font-weight: 850; cursor: pointer; - transition: opacity 0.2s; + transition: opacity 0.2s, transform 0.1s; +} + +.language-switch button:active { + transform: scale(0.96); } .language-switch button:not([aria-pressed="true"]):hover { @@ -218,7 +222,11 @@ h1 { text-decoration: none; font-size: 15px; font-weight: 800; - transition: opacity 0.2s; + transition: opacity 0.2s, transform 0.1s; +} + +.button:active { + transform: scale(0.98); } .button:hover {