From 190e3902155a856638d6ea6682ddcb697106a69a Mon Sep 17 00:00:00 2001 From: seonghobae <8172694+seonghobae@users.noreply.github.com> Date: Fri, 31 Jul 2026 14:16:26 +0000 Subject: [PATCH] =?UTF-8?q?=F0=9F=8E=A8=20Palette:=20=EB=B2=84=ED=8A=BC=20?= =?UTF-8?q?=ED=81=B4=EB=A6=AD=20=EC=8B=9C=EA=B0=81=EC=A0=81=20=ED=94=BC?= =?UTF-8?q?=EB=93=9C=EB=B0=B1=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ๐Ÿ’ก What: `.button` ๋ฐ ์–ธ์–ด ์ „ํ™˜ ์Šค์œ„์น˜์— `:active` ์ƒํƒœ (`transform: scale`) ์ถ”๊ฐ€ ๐ŸŽฏ Why: ๋ฒ„ํŠผ์„ ํด๋ฆญํ•  ๋•Œ ์ง๊ด€์ ์ธ ๋ฌผ๋ฆฌ์  ํ”ผ๋“œ๋ฐฑ(๋ฒ„ํŠผ์ด ๋ˆŒ๋ฆฌ๋Š” ๋А๋‚Œ)์ด ์—†์–ด์„œ ์ธํ„ฐ๋ž™์…˜์˜ ์ธ์ง€๋ ฅ์ด ๋‹ค์†Œ ๋–จ์–ด์ง€๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•จ ๐Ÿ“ธ Before/After: ์‹œ๊ฐ์ ์ธ ํ„ฐ์น˜ ํ”ผ๋“œ๋ฐฑ์ด ์—†์–ด ํด๋ฆญ ์—ฌ๋ถ€ ํŒŒ์•…์ด ์–ด๋ ค์› ์œผ๋‚˜, ์ ์šฉ ํ›„ ํ™•์‹คํ•œ ํ”ผ๋“œ๋ฐฑ์ด ์ƒ๊ฒผ์Šต๋‹ˆ๋‹ค. โ™ฟ Accessibility: ํ˜ธ๋ฒ„๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•œ ํ„ฐ์น˜ ๋””๋ฐ”์ด์Šค(๋ชจ๋ฐ”์ผ ํ™˜๊ฒฝ) ์‚ฌ์šฉ์ž์—๊ฒŒ๋„ ํ™•์‹คํ•œ ๋ฐ˜์‘์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. --- .jules/palette.md | 4 ++++ CHANGELOG.md | 1 + styles.css | 12 ++++++++++-- 3 files changed, 15 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..6aa424b --- /dev/null +++ b/.jules/palette.md @@ -0,0 +1,4 @@ + +## 2026-07-31 - ๋ฒ„ํŠผ ํ„ฐ์น˜(ํด๋ฆญ) ํ”ผ๋“œ๋ฐฑ ์‹œ๊ฐํ™” +**Learning:** ํด๋ฆญ ๊ฐ€๋Šฅํ•œ ์š”์†Œ(`.button`, `button`)์— ํ˜ธ๋ฒ„ ์ƒํƒœ๋งŒ ์žˆ๊ณ  ํด๋ฆญ ์‹œ ์‹œ๊ฐ์  ํ”ผ๋“œ๋ฐฑ์ด ์—†์–ด ๋ฒ„ํŠผ์ด ๋ˆŒ๋ ธ๋Š”์ง€ ์ง๊ด€์ ์œผ๋กœ ์•Œ๊ธฐ ์–ด๋ ค์› ์Šต๋‹ˆ๋‹ค. +**Action:** `:active` ๊ฐ€์ƒ ํด๋ž˜์Šค์— `transform: scale(0.97)`์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์‚ฌ์šฉ์ž๊ฐ€ ํ„ฐ์น˜/ํด๋ฆญํ•˜๋Š” ์ˆœ๊ฐ„ ๋ฒ„ํŠผ์ด ๋ˆŒ๋ฆฌ๋Š” ๋“ฏํ•œ ๋ฌผ๋ฆฌ์ ์ธ ํ”ผ๋“œ๋ฐฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. diff --git a/CHANGELOG.md b/CHANGELOG.md index 56ad628..561c676 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,7 @@ # CHANGELOG ## [Unreleased] +- **UX ๊ฐœ์„ **: ๋ฒ„ํŠผ๊ณผ ์–ธ์–ด ์ „ํ™˜ ์Šค์œ„์น˜ ํด๋ฆญ ์‹œ `:active` ์ƒํƒœ์—์„œ ์ถ•์†Œ(`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..b3bda0c 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.97); } .button:hover {