๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
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, ๋ฏธ๋””์–ด ์ฟผ๋ฆฌ

    ๋ฐ˜์‘ํ˜•

    ๋Œ“๊ธ€