๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
CSS

[CSS] SCSS๋กœ ์›จ์ด๋ธŒ ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋งŒ๋“ค๊ธฐ๐ŸŒŠ

by ์ฝ”๋”ฉ๊ณต์ฑ… 2022. 9. 19.
๋ฐ˜์‘ํ˜•

์›จ์ด๋ธŒ ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋งŒ๋“ค๊ธฐ๐ŸŒŠ

์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ์›จ์ด๋ธŒ ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ๋งŒ๋“ค์–ด๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค.

HTML Pug ์ฝ”๋“œ

HTML ์ฝ”๋“œ์—์„œ๋Š” ๋ฐ˜๋ณต ์ž‘์—…ํ•ด์•ผ ํ•  ๊ฒƒ์„ Pug ์ฝ”๋“œ์—์„œ๋Š” JS์ฒ˜๋Ÿผ for๋ฌธ์ด ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜์—ฌ ์†Œ์Šค๋ฅผ ๊ฐ„๋žตํ™” ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. circle-wrap ํด๋ž˜์Šค div ๋ฐ•์Šค ํ•˜๋‚˜ ์•ˆ์— row ํด๋ž˜์Šค div(์•ˆ์— circleํด๋ž˜์Šค div 12๊ฐœ) 12๊ฐœ๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

div.circle-wrap
  - for (var x =1; x <= 12; x++)
    div.row
      - for (var y = 1; y <= 12; y++)
        div.circle

HTML ์ฝ”๋“œ๋กœ ์ปดํŒŒ์ผ

HTML์—์„œ ๋ฌด์ฒ™ ๊ธธ๊ณ  ๋ณต์žกํ•œ ์ฝ”๋“œ๋„ Pug์—์„œ๋Š” 5์ค„์ด๋ฉด ์“ธ ์ˆ˜ ์žˆ๋‹ค.

์ฝ”๋“œ ํŽผ์ณ๋ณด๊ธฐ
<div class="circle-wrap">
  <div class="row">
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
  </div>
  <div class="row">
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
  </div>
  <div class="row">
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
  </div>
  <div class="row">
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
  </div>
  <div class="row">
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
  </div>
  <div class="row">
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
  </div>
  <div class="row">
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
  </div>
  <div class="row">
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
  </div>
  <div class="row">
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
  </div>
  <div class="row">
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
  </div>
  <div class="row">
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
  </div>
  <div class="row">
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
    <div class="circle"></div>
  </div>
</div>

SCSS ์ฝ”๋“œ

body์— ๊ทธ๋ผ๋ฐ์ด์…˜ ๋ฐฐ๊ฒฝ์„ ์ฃผ๊ณ  row ์•„์ดํ…œ๋“ค์„ flex๋กœ ๊ฐ€์šด๋ฐ ์ •๋ ฌํ•œ ๋‹ค์Œ ๊ฐ๊ฐ circle์— 10px์˜ ๋„ˆ๋น„๊ฐ’๊ณผ ๋†’์ด๊ฐ’์„ ์ฃผ๊ณ  keyframes๋กœ ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์ฃผ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.


@mixin center {
  display: flex;
  align-items: center;
  justify-content: center;
}
body {
  @include center;
  height: 100vh;
  background-image: linear-gradient(45deg, #00dbde 0%, #fc00ff 100%)
}

.row {
  display: flex;
  .circle {
    width: 10px;
    height: 10px;
    border-radius: 50%;
    margin: 5px 10px;
    background: #fff;
    transform-origin: top center;
    animation: spin 1s linear infinite;
  }
}
@keyframes spin {
    0% {transform:scale(1.1) rotate(0deg)}
    50% {transform:scale(0.2) rotate(180deg)}
    100% {transform:scale(1.1) rotate(360deg)}
  }

  // .row:nth-child(1) .circle{animation-delay: 100ms}
  // .row:nth-child(1) .circle{animation-delay: 200ms}
  // .row:nth-child(1) .circle{animation-delay: 300ms}
  // .row:nth-child(1) .circle{animation-delay: 400ms}

  // for๋ฌธ์œผ๋กœ ๊ฐ„๋žตํ™”
  @for $i from 1 through 12 {
    .row:nth-child(#{$i}) .circle{animation-delay: 100ms * $i}
  }

๊ฒฐ๊ณผ๋ฌผ

์™„~์„ฑ๐ŸŒŠ

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€


Reference Book

JavaScript
HTML
CSS
๊ด‘๊ณ  ์ค€๋น„์ค‘์ž…๋‹ˆ๋‹ค.