From d414923730dce7ab72398ce6e413d49d3c4a525b Mon Sep 17 00:00:00 2001 From: seonghobae <8172694+seonghobae@users.noreply.github.com> Date: Sun, 26 Jul 2026 13:56:30 +0000 Subject: [PATCH] =?UTF-8?q?feat(ux):=20=EB=B2=84=ED=8A=BC=20=ED=99=9C?= =?UTF-8?q?=EC=84=B1=ED=99=94(active)=20=EC=8B=9C=20=EC=B4=89=EA=B0=81?= =?UTF-8?q?=EC=A0=81=20=EC=8B=9C=EA=B0=81=20=ED=94=BC=EB=93=9C=EB=B0=B1=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - `.button` 및 `.language-switch button` 가상 클래스(`:active`)에 `transform: scale()` 적용하여 사용자가 클릭 시 버튼이 눌리는 듯한 반응성 추가. - 호버링만으로는 제공하기 어려웠던 즉각적인 클릭 체감성(Micro-UX) 향상. - 관련 내용을 Palette 저널(`.jules/palette.md`) 및 CHANGELOG에 기록. --- .jules/palette.md | 3 +++ CHANGELOG.md | 1 + styles.css | 12 ++++++++++-- 3 files changed, 14 insertions(+), 2 deletions(-) create mode 100644 .jules/palette.md 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 {