[๐ŸŽ ๊ฐ•์˜์ •๋ฆฌ] ์บ๋Ÿฌ์…€(carousel slider) ๋งŒ๋“ค๊ธฐ

yj_1108ยท2023๋…„ 8์›” 18์ผ
0
post-thumbnail

์บ๋Ÿฌ์…€(carousel)?

์‚ฌ์ „์  ์˜๋ฏธ์˜ ์บ๋Ÿฌ์…€์€ ํšŒ์ „๋ชฉ๋งˆ๋‹ค.

์บ๋Ÿฌ์…€ ์Šฌ๋ผ์ด๋”๋Š” ํšŒ์ „๋ชฉ๋งˆ๊ฐ€ ๋น™๊ธ€๋น™๊ธ€ ๋Œ๋“ฏ
์ด๋ฏธ์ง€ ํ˜น์€ ์˜์ƒ์„ ์Šฌ๋ผ์ด๋” ํ˜•ํƒœ๋กœ ๋งŒ๋“ค์–ด ๋ณด์—ฌ์ง€๋Š” UI๋ฅผ ํ†ต์นญํ•˜์—ฌ ๋ถ€๋ฅธ๋‹ค.

One-way ์• ๋‹ˆ๋ฉ”์ด์…˜์ด ๋“ค์–ด๊ฐ„ UI๋ฅผ ๋งŒ๋“œ๋Š” ์ˆœ์„œ

  1. ์• ๋‹ˆ๋ฉ”์ด์…˜ ์‹œ์ž‘ ์ „ ํ™”๋ฉด ๋งŒ๋“ค๊ธฐ
  2. ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ข…๋ฃŒ ํ›„ ํ™”๋ฉด ๋งŒ๋“ค๊ธฐ
  3. ์ข…๋ฃŒํ™”๋ฉด์œผ๋กœ ์–ด๋–ป๊ฒŒ ๋ณ€ํ• ์ง€ JS ์ฝ”๋“œ ์ž‘์„ฑ
  4. transition ์ถ”๊ฐ€

์—ฌ๋Ÿฌ ๋ฐฉ๋ฒ•์ด ์žˆ์œผ๋‚˜
์ด๋ฏธ์ง€๋ฅผ ์ด๋ ‡๊ฒŒ ๊ฐ€๋กœ๋กœ ๊ธธ๊ฒŒ ๋†“์€ ํ›„ ์™ผ์ชฝ์œผ๋กœ ๋Œ๊ณ  ์˜ค๋ฉด ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

1. ์• ๋‹ˆ๋ฉ”์ด์…˜ ์‹œ์ž‘ ์ „ ํ™”๋ฉด ๋งŒ๋“ค๊ธฐ

      <div>
        <div class="slide-container">
          <div class="slide-box">
            <img src="car1.png">
          </div>
          <div class="slide-box">
            <img src="car2.png">
          </div>
          <div class="slide-box">
            <img src="car3.png">
          </div>
        </div>
     </div> 
.slide-container {
    width: 300vw;
    transition: all 1s;
  }
  .slide-box {
    width: 100vw;
    float: left;
  }
  .slide-box img {
    width: 100%;
  } 

VW : ๋ธŒ๋ผ์šฐ์ € ํญ์— ๋น„๋ก€ํ•œ ๋‹จ์œ„. 100vw == ๋ธŒ๋ผ์šฐ์ € ํญ์˜ 100%
์ด๋ฏธ์ง€๋ฅผ ๊ฐ€๋กœ๋กœ ๋ฐฐ์น˜ํ•˜๊ธฐ ์œ„ํ•ด float: left
์ด๋ฏธ์ง€ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ด๋™์œผ๋กœ์จ ๋ณ€ํ™”๋ฅผ ์คŒ transition: transform 1s ์„ค์ •

์ด๋ ‡๊ฒŒ๋งŒ ์ž‘์„ฑ ์‹œ ํ•˜๋‹จ์— ์Šคํฌ๋กค ๋ฐ”๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค.
์ด๋Š” ์ด๋ฏธ์ง€์˜ ํฌ๊ธฐ๊ฐ€ ์ปค์„œ ์ƒ๊ธฐ๋Š” ๊ฒƒ์œผ๋กœ ์Šคํฌ๋กค ๋ฐ”๋ฅผ ์ˆจ๊ธฐ๊ธฐ ์œ„ํ•ด
div๋กœ ๊ฐ์‹ธ์„œ style="overflow: hidden" ์ถ”๊ฐ€ํ•ด์ฃผ์ž.

      <div style="overflow: hidden">
        <div class="slide-container">
          <div class="slide-box">
            <img src="car1.png">
          </div>
          <div class="slide-box">
            <img src="car2.png">
          </div>
          <div class="slide-box">
            <img src="car3.png">
          </div>
        </div>
     </div> 

2. ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ข…๋ฃŒ ํ›„ ํ™”๋ฉด ๋งŒ๋“ค๊ธฐ

์–ด๋–ค html ์š”์†Œ๋ฅผ ์™ผ์ชฝ์œผ๋กœ ์ด๋™์‹œํ‚ค๋Š”๊ฑด margin-left ์ด๋‚˜ transform ์†์„ฑ์„ ์‚ฌ์šฉ

.slide-container {
  width: 300vw;
  transition: all 1s;
  transform: translateX(-100vw);
} 

3. ์ข…๋ฃŒํ™”๋ฉด์œผ๋กœ ์–ด๋–ป๊ฒŒ ๋ณ€ํ• ์ง€ JS ์ฝ”๋“œ ์ž‘์„ฑ

jQurey๋กœ ์ฐพ์€ ์š”์†Œ์— .css()๋กœ ์†์„ฑ๋ณ€๊ฒฝ

์ด๋ ‡๊ฒŒ ์Šฌ๋ผ์ด๋”ฉ ๋˜๋Š” ํ™”๋ฉด์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.


1, 2, 3 ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด 1๋ฒˆ์‚ฌ์ง„ 2๋ฒˆ์‚ฌ์ง„ 3๋ฒˆ์‚ฌ์ง„์œผ๋กœ ์Šฌ๋ผ์ด๋”ฉ๋˜๋Š” ํ™”๋ฉด
์ด์ „ / ๋‹ค์Œ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ์ด์ „์‚ฌ์ง„ / ๋‹ค์Œ์‚ฌ์ง„์œผ๋กœ ๋ฐ”๋€Œ๋Š” JS๊นŒ์ง€ ๋งŒ๋“ค์—ˆ๋‹ค.

profile
๊ธฐ๋ก๊ณผ ๊พธ์ค€ํ•จ์ด ๊ณง ์Šค์Šค๋กœ๋ฅผ ์„ฑ์žฅ์‹œํ‚ค๋Š” ํž˜

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