๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Lect & Tip/html, css, scss

CSS ํ…์ŠคํŠธ ๋„ค์˜จ์‚ฌ์ธ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•

by ๋‚ฏ์„ ๊ณต๊ฐ„2019 2023. 10. 7.
๋ฐ˜์‘ํ˜•

CSS ํ…์ŠคํŠธ ๋„ค์˜จ์‚ฌ์ธ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•

๋„ค์˜จ ํ…์ŠคํŠธ๋Š” ์›น ์‚ฌ์ดํŠธ์— ๋ฉ‹์ง„ ๋ฏธ๋ž˜์ ์ธ ๋А๋‚Œ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. CSS์™€ ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ํ™œ์šฉํ•˜๋ฉด ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ํ…์ŠคํŠธ์— ๋น›๋‚˜๋Š” ํšจ๊ณผ๋ฅผ ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ํฌ์ŠคํŒ…์—์„œ๋Š” CSS ํ…์ŠคํŠธ ๋„ค์˜จ์‚ฌ์ธ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์„ ์†Œ๊ฐœํ•˜๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.

ํ…์ŠคํŠธ์— ๊ธ€๋กœ์šฐ ํšจ๊ณผ ์ถ”๊ฐ€

๋จผ์ € ํ…์ŠคํŠธ์— ๊ธ€๋กœ์šฐ(๋น›๋‚˜๋Š”) ํšจ๊ณผ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ๋ฒ•๋ถ€ํ„ฐ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด์„œ๋Š” CSS์˜ text-shadow ์†์„ฑ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์ด CSS๋ฅผ ์ž‘์„ฑํ•˜์—ฌ ๊ธ€๋กœ์šฐ ํšจ๊ณผ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

.neonText {
  color: #fff;
  text-shadow: 0 0 7px #fff, 0 0 10px #fff, 0 0 21px #fff, 0 0 42px #0fa, 0 0 82px #0fa, 0 0 92px #0fa, 0 0 102px #0fa, 0 0 151px #0fa;
}

CSS "๊นœ๋ฐ•์ž„" ํšจ๊ณผ

๋„ค์˜จ ์‚ฌ์ธ์—๋Š” ๋•Œ๋กœ๋Š” ๋น›์ด ๊นœ๋ฐ•์ด๋Š” ํŠน์ง•์ด ์žˆ์Šต๋‹ˆ๋‹ค. CSS ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ํ†ตํ•ด ์ด๋Ÿฌํ•œ ํšจ๊ณผ๋ฅผ ์žฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. @keyframes๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊นœ๋ฐ•์ด๋Š” ํšจ๊ณผ๋ฅผ ๋งŒ๋“ค์–ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

@keyframes flicker {
  0%, 18%, 22%, 25%, 53%, 57%, 100% {
    text-shadow: 0 0 4px #fff, 0 0 11px #fff, 0 0 19px #fff, 0 0 40px #0fa, 0 0 80px #0fa, 0 0 90px #0fa, 0 0 100px #0fa, 0 0 150px #0fa;
  }
  20%, 24%, 55% {
    text-shadow: none;
  }
}

CSS ํŽ„์‹ฑ ๊ธ€๋กœ์šฐ (Pulsing Glow)

ํ…์ŠคํŠธ๊ฐ€ ๊นœ๋ฐ•์ด๋Š” ๊ฒƒ ์™ธ์—๋„, ํ…์ŠคํŠธ ์ฃผ๋ณ€์˜ ๋น›์ด ํŽ„์‹ฑ(๋งฅ๋™)ํ•˜๋Š” ํšจ๊ณผ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด @keyframes๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@keyframes pulsate {
  0% {
    text-shadow: 0 0 2px #fff, 0 0 4px #fff, 0 0 6px #fff, 0 0 10px #0fa, 0 0 45px #0fa, 0 0 55px #0fa, 0 0 70px #0fa, 0 0 80px #0fa;
  }
  100% {
    text-shadow: 0 0 4px #fff, 0 0 11px #fff, 0 0 19px #fff, 0 0 40px #0fa, 0 0 80px #0fa, 0 0 90px #0fa, 0 0 100px #0fa, 0 0 150px #0fa;
  }
}

์ ‘๊ทผ์„ฑ ๊ณ ๋ ค

์›€์ง์ž„์„ ์ค„์ด๋Š” ๊ฒƒ์„ ์„ ํ˜ธํ•˜๋Š” ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•ด prefers-reduced-motion ๋ฏธ๋””์–ด ์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์ œ๊ฑฐํ•˜๊ฑฐ๋‚˜ ์ค„์—ฌ ์‚ฌ์šฉ์ž์˜ ์ ‘๊ทผ์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@media screen and (prefers-reduced-motion) {
  h1 {
    animation: none;
  }
}

๋งˆ์น˜๋ฉฐ

CSS๋ฅผ ํ™œ์šฉํ•˜๋ฉด ๋„ค์˜จ ํ…์ŠคํŠธ๋ฅผ ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ, text-shadow์™€ CSS ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์ž˜ ํ™œ์šฉํ•˜๋ฉด ๋”์šฑ ๋‹ค์ฑ„๋กœ์šด ํšจ๊ณผ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์›น ๋””์ž์ธ์— ๋ฉ‹์ง„ ํšจ๊ณผ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด, ์ด ๊ธฐ์ˆ ์„ ํ•œ๋ฒˆ ์‹œ๋„ํ•ด๋ณด์„ธ์š”.


ํ‚ค์›Œ๋“œ: ๋„ค์˜จ ํ…์ŠคํŠธ, CSS, text-shadow, ์• ๋‹ˆ๋ฉ”์ด์…˜, ๊ธ€๋กœ์šฐ ํšจ๊ณผ, ๊นœ๋ฐ•์ž„ ํšจ๊ณผ, ํŽ„์‹ฑ ๊ธ€๋กœ์šฐ, ์ ‘๊ทผ์„ฑ, prefers-reduced-motion, ๋ฏธ๋””์–ด ์ฟผ๋ฆฌ

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€