diff --git a/.jules/palette.md b/.jules/palette.md new file mode 100644 index 0000000..f5808e4 --- /dev/null +++ b/.jules/palette.md @@ -0,0 +1,3 @@ +## 2024-05-18 - Click Feedback for Interactive Elements +**Learning:** 시각적 호버 상태(opacity change)만으로는 사용자가 클릭이 성공적으로 이루어졌는지 즉시 체감하기 어렵습니다. 물리적인 버튼처럼 눌리는 피드백이 필요합니다. +**Action:** 클릭 가능한 주요 버튼 요소에 `transform: scale(0.96)` 등의 미세한 스케일 축소를 `:active` 상태에 적용하여 즉각적이고 부드러운 촉각적(Tactile) 시각 피드백을 제공하도록 합니다. diff --git a/CHANGELOG.md b/CHANGELOG.md index 56ad628..dc3441d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,7 @@ # CHANGELOG ## [Unreleased] +- **UX/접근성 개선**: 클릭 가능한 인터랙티브 요소(`.button`, 언어 전환 버튼 등)에 `:active` 상태에서의 미세한 크기 축소(`transform: scale()`) 효과를 추가하여 사용자에게 즉각적이고 확실한 클릭 피드백을 제공하도록 개선했습니다. - **보안 개선**: 컴포넌트 갤러리의 인라인 스크립트와 스타일을 외부 파일로 분리하고, 엄격한 Content-Security-Policy를 적용해 XSS 방어를 강화했습니다. - **성능 회귀 복원**: 오프스크린 `.section` 렌더링을 `content-visibility: auto`로 지연하고, 일반 섹션은 600px·콘텐츠가 큰 DIKW/projects 섹션은 1000px의 `contain-intrinsic-size` placeholder를 유지해 초기 렌더링 비용과 스크롤바 이동을 함께 줄였습니다. - **보안 개선**: Trusted Types 기반 CSP 강화: 잠재적인 DOM 기반 XSS 공격을 방지하기 위해 `require-trusted-types-for 'script'` 지시어 추가 diff --git a/styles.css b/styles.css index 02cfeb6..54344f7 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 ease; +} + +.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 ease; +} + +.button:active { + transform: scale(0.98); } .button:hover {