1. ๋“œ๋Ÿผ ๐Ÿฅ

EEuglenaยท2023๋…„ 7์›” 24์ผ
0

JavaScript30

๋ชฉ๋ก ๋ณด๊ธฐ
2/27
post-thumbnail

๋ชฉํ‘œ

ํ‚ค๋ณด๋“œ ์ด๋ฒคํŠธ๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ˆŒ๋ฆฐ ํ‚ค๋ฅผ ์‹œ๊ฐ์ ์œผ๋กœ ํ‘œ์‹œํ•˜๊ณ  ํ‚ค์— ๋Œ€์‘๋˜๋Š” ๋“œ๋Ÿผ ์†Œ๋ฆฌ๋ฅผ ์žฌ์ƒํ•ด ๋ณด์ž.

๋ ˆ์ด์•„์›ƒ ๋งŒ๋“ค๊ธฐ

HTML Code

๋ฐ”๋‹๋ผ JS๋งŒ์„ ์‚ฌ์šฉํ•  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— HTML ๋ ˆ์ด์•„์›ƒ์„ ๋ฏธ๋ฆฌ ๋งŒ๋“ค๊ณ  ์‹œ์ž‘ํ•œ๋‹ค. ํ™”๋ฉด์— ํ‘œ์‹œ๋˜๋Š” ๊ฒƒ์€ ๋ฐฐ๊ฒฝ ์ด๋ฏธ์ง€์™€ ํ‚ค๋ฅผ ํ‘œ์‹œํ•˜๊ธฐ ์œ„ํ•œ div 9๊ฐœ๊ฐ€ ์ „๋ถ€์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ„๋‹จํ•˜๊ฒŒ ์ž‘์„ฑํ–ˆ๋‹ค. ํ‚ค์— audio์™€ ๊ฐ™์€ ์†์„ฑ์„ ์ฃผ๊ธฐ ์œ„ํ•ด id ๋Œ€์‹  data-key๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค.

์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑ

Keydown Handler

ํ‚ค๋ณด๋“œ ์ด๋ฒคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ์ง€๋งŒ, code๋ณด๋‹ค ์ง๊ด€์ ์ธ key๋ฅผ ์ด์šฉํ–ˆ๋‹ค. key๋Š” "a"์ฒ˜๋Ÿผ ์†Œ๋ฌธ์ž ๋ฌธ์ž์—ด๋กœ ๋“ค์–ด์˜ค๊ธฐ ๋•Œ๋ฌธ์— ๋Œ€๋ฌธ์ž๋กœ ๋ฐ”๊ฟ”์ฃผ์—ˆ๋‹ค. ์ดํ›„ HTML์—์„œ ํ•ด๋‹นํ•˜๋Š” div์™€ audio๋ฅผ ๊ฐ๊ฐ ์ฐพ์•„์˜จ ๋’ค, ๋‘˜ ๋‹ค ์กด์žฌํ•  ๊ฒฝ์šฐ div์—๋Š” ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์ฃผ๊ณ  audio๋Š” ์žฌ์ƒํ–ˆ๋‹ค.

Keyup Handler

ํ‚ค๋ฅผ ๋–ผ๋ฉด ์• ๋‹ˆ๋ฉ”์ด์…˜์ด ํ•ด์ œ๋˜๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด keyup ์ด๋ฒคํŠธ์— ๋ฆฌ์Šค๋„ˆ๋ฅผ ์ถ”๊ฐ€ํ–ˆ๋‹ค.

CSS ์ž‘์„ฑ

Before

flex๋ฅผ ์ด์šฉํ•ด ์š”์†Œ๋“ค์„ ๋ฐฐ์น˜ํ•˜๊ณ  ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์ฃผ๊ธฐ ์œ„ํ•œ ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค. ์ฒ˜์Œ์—๋Š” ๊ฐ•์˜์—์„œ ์š”๊ตฌํ•˜๋Š” ๋Œ€๋กœ scale(1.1)๊ณผ border์˜ ๋ณ€ํ™”๋ฅผ ์ฃผ์—ˆ์œผ๋‚˜, flex ๋ฐฐ์น˜์—์„œ ์ž์‹์˜ ํฌ๊ธฐ๊ฐ€ ๋ฐ”๋€Œ๋ฉด์„œ ๋‹ค๋ฅธ ์š”์†Œ๋“ค์˜ ์œ„์น˜๊ฐ€ ์›€์ง์—ฌ์„œ ๋ณด๊ธฐ ๋ถˆํŽธํ–ˆ๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์œ„์น˜๋ฅผ ์ง์ ‘ ์ง€์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ํฌ๊ธฐ๊ฐ€ ๊ณ ์ •๋œ ์ปจํ…Œ์ด๋„ˆ๋กœ ํ•œ ๋ฒˆ ๋” ๊ฐ์‹ธ๋Š” ๋ฐฉ๋ฒ•์„ ์ƒ๊ฐํ•ด ๋ณด์•˜์œผ๋‚˜ ์ƒ์‚ฐ์„ฑ์ด ๋–จ์–ด์ง€๋Š” ๊ฒƒ ๊ฐ™์•„ scale๊ณผ border๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  outline์œผ๋กœ ๋Œ€์ฒดํ•˜์˜€๋‹ค.

After

์ƒˆ๋กœ ์•Œ๊ฒŒ ๋œ ๊ฒƒ

์ „์— body์— ์ง์ ‘ background๋ฅผ ์ง€์ •ํ•˜๋Š” ๋ฐฉ์‹์€ deprecated ๋˜์—ˆ๋‹ค๊ณ  ์–ผํ• ์ฝ์€ ๊ธฐ์–ต์ด ์žˆ์—ˆ๋Š”๋ฐ, ์ž์„ธํžˆ ์ฐพ์•„๋ณด๋‹ˆ background๊ฐ€ deprecated ๋˜์—ˆ์œผ๋‹ˆ background-image๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ฐฐ๊ฒฝ ์ด๋ฏธ์ง€๋ฅผ ๋„ฃ์œผ๋ผ๋Š” ๊ฒƒ์ด์—ˆ๋‹ค.

์ด๋ชจ์ง€๋กœ ํŒŒ๋น„์ฝ˜ ๋งŒ๋“ค๊ธฐ - fav.farm
ํŒŒ๋น„์ฝ˜์„ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค. ๊ฐ•์˜์—์„œ๋„ ๋˜‘๊ฐ™์€ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ด์„œ ๊ทธ ํ•ด๊ฒฐ์ฑ…์œผ๋กœ fav.farm์ด๋ผ๋Š” ์‚ฌ์ดํŠธ๋ฅผ ์ด์šฉํ–ˆ๋‹ค. ์ด๋ชจ์ง€๋ฅผ ํŒŒ๋น„์ฝ˜์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ๋Š” ์‚ฌ์ดํŠธ์ธ๋ฐ, ๊ฐ„๋‹จํ•œ URL์„ ์ž…๋ ฅํ•˜์—ฌ ์ด๋ชจ์ง€๋ฅผ svg ํ˜•์‹์œผ๋กœ ๋ฐ›์•„์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

<link rel="icon" href="https://fav.farm/๐Ÿ”ฅ" />

a {
  cursor: url('https://fav.farm/๐Ÿ‘‰') 15 0, auto;
}

์‚ฌ์ดํŠธ์— ๋“ค์–ด๊ฐ€๋ฉด ์ผ๋‹จ ๊ฐ€์šด๋Žƒ์†๊ฐ€๋ฝ ๋ชจ์–‘ ์ปค์„œ๊ฐ€ ๋ฐ˜๊ฒจ์ฃผ๊ธฐ์— ๋‹นํ™ฉ์Šค๋Ÿฝ์ง€๋งŒ ์‚ฌ์ดํŠธ์—์„œ ์„ค๋ช…ํ•˜๋Š” ์šฉ๋„๋Š” ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€๋กœ, ํŒŒ๋น„์ฝ˜์œผ๋กœ ์“ธ ์ด๋ชจ์ง€๋ฅผ ๋ฐ›์•„์˜ค๊ฑฐ๋‚˜ ์ปค์„œ๋ฅผ ์ปค์Šคํ„ฐ๋งˆ์ด์ง• ํ•  ์ˆ˜ ์žˆ๋‹ค. ์œ„์˜ ์šฉ๋„๋กœ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ HTML ํ—ค๋”์—, ์•„๋ž˜ ์šฉ๋„๋กœ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ CSS ํŒŒ์ผ์— ๋„ฃ์–ด์ฃผ๋ฉด ๋œ๋‹ค.

์†Œ์Šค ์ฝ”๋“œ

Visit Github Repository

0๊ฐœ์˜ ๋Œ“๊ธ€