728x90
๋ฐ์ํ
๐ก ์ค์ต ํฌ์ธํธ!
- ์ค๋์ ์ด๋ฏธ์ง ์ฌ๋ผ์ด๋๋ฅผ ๋ง๋ค์ด๋ณด์๋ค.
- ํ๋ฉด ํ๋จ ๊ฐ์ด๋ฐ์ ์๋ ๋๊ทธ๋ผ๋ฏธ ๋ฒํผ 3๊ฐ๋ ๊ฐ ๋ฒํผ์ ๋๋ ์ ๋ ํด๋นํ๋ ์์์ ์ฌ๋ผ์ด๋๋ก ์ด๋์์ผ์ค๋ค.
- ๋๊ทธ๋ผ๋ฏธ ๋ฒํผ๋ค ์์ ํ์ดํ๋ ์ด์ , ๋ค์ ๋ฒํผ์ผ๋ก ํ์ฌ ์ฌ๋ผ์ด๋๋ฅผ ๊ธฐ์ค์ผ๋ก ์ด์ ์ฌ๋ผ์ด๋๋ ๋ค์ ์ฌ๋ผ์ด๋๋ก ์ด๋์์ผ์ค๋ค.
- ์ฌ์ค ๋๊ทธ๋ผ๋ฏธ ๋ฒํผ 3๊ฐ๋ ์๋์ชฝ์, ํ์ดํ ๋ฒํผ์ ์ฌ๋ผ์ด๋ ์ ๋์ ๋ฃ๊ณ ์ถ์๋๋ฐ position: absolute ๋ z-index ๋ฅผ ์ด์ฉํด๋ ์ํ๋ ๋ฐฐ์น๊ฐ ์ ๋์ค์ง ์์๊ณ , ์ด์ฐ์ด์ฐ ๋์ค๋ฉด ๋ฐ์ํ์์ ์์๊ฒ ๋ฐฐ์น๋์ง ์์๋ค. ๊ทธ๋๋ ๊ตณ์ด ๋ง๋ค๋ ค๋ฉด media query ๋ฅผ ์ฌ์ฉํด์ผ ํ ๊ฒ ๊ฐ์๋ฐ... ๋ค์๋ฒ์ ์ข ๋ ๊ณต๋ถํด์ ๋ค์ ๋์ ํด๋ด์ผ ํ ๊ฒ ๊ฐ๋ค.
๐ HTML
<div style="overflow: hidden;">
<div class="slide-container">
<div class="slide-box">
<img src="./img/car1.png">
</div>
<div class="slide-box">
<img src="./img/car2.png">
</div>
<div class="slide-box">
<img src="./img/car3.png">
</div>
</div>
<div class="btns">
<button class="angle-btn prev">
<i class="fas fa-angle-left"></i>
</button>
<button class="dot-btn slide-1"> </button>
<button class="dot-btn slide-2"> </button>
<button class="dot-btn slide-3"> </button>
<button class="angle-btn next">
<i class="fas fa-angle-right"></i>
</button>
</div>
</div>
๐ CSS
.slide-container {
width: 300vw;
transition: all 1s;
}
.slide-box {
width: 100vw;
float: left;
}
.slide-box img {
width: 100%;
}
.btns {
display: inline-block; /* margin-collapse ํด๊ฒฐ */
width: 100%; /* margin-collapse ํด๊ฒฐ */
text-align: center;
padding: 10px;
z-index: 5;
top: -70px;
position: relative;
}
.angle-btn {
background: transparent;
border: none;
font-size: 30px;
color: gold;
}
.angle-btn:active {
color: darkgoldenrod;
}
.prev {
margin-right: 20px;
}
.next {
margin-left: 20px;
}
.dot-btn {
background: gold;
border: none;
width: 10px;
height: 10px;
border-radius: 50%;
transform: translate(0, -55%);
margin: 0 5px;
}
.dot-btn:focus {
background: darkgoldenrod;
}
- ์ผ๋จ ๋ด๊ฐ ๋ณด๋ ํ๋ฉด์ ๋๋น๋ 100vw ์ด๊ณ ์ฌ๋ผ์ด๋ ์ด๋ฏธ์ง๋ float ์์ฑ์ด ์ ์ฉ๋์ด ์ด 3์ฅ์ด ๊ฐ๋ก๋ก ๋์ธ ์ํ์ด๋ฏ๋ก ์ ์ฒด ๋๋น๋ 300vw ๋ก ์ค์ ํ๋ค.
- ์ฌ๊ธฐ๊น์ง ํ๋ฉด ๊ฐ๋ก๋ก ์คํฌ๋กค์ด ๊ธธ๊ฒ ์๊ธฐ๋๋ฐ ์ผ๋จ ์คํฌ๋กค ์์ด ์ฒซ ์ด๋ฏธ์ง๋ง ๋ณด์ฌ์ผ ํ๋ฏ๋ก, overflow: hidden ์์ฑ์ ์ด์ฉํด์ ์คํฌ๋กค์ ์์ด๋ค.
- ์ค์ต์ ํ๋ค๊ฐ ๋ฒํผ ๋ฐฐ์น ๊ณผ์ ์ค์ margin-collapse ํ์์ ๋ค์ ๋ง์ฃผํ๋ค.
- ์ด์ฌํ ๊ตฌ๊ธ๋งํ ๊ฒฐ๊ณผ display: inline-block ์ผ๋ก ํ๊ณ width ๋ฅผ 100% ๋ก ์ค์ ํด์ฃผ๋ฉด ํด๊ฒฐ๋๋์ ์ ์ฉํด๋ณด์๋ค.
๐ JavaScript
var slide = 1;
$('.slide-1').on('click', function(){
$('.slide-container').css('transform', 'translateX(0vw)');
slide = 1;
})
$('.slide-2').on('click', function(){
$('.slide-container').css('transform', 'translateX(-100vw)');
slide = 2;
})
$('.slide-3').on('click', function(){
$('.slide-container').css('transform', 'translateX(-200vw)');
slide = 3;
})
$('.prev').on('click', function(){
if (slide == 3){
$('.slide-container').css('transform', 'translateX(-100vw)');
slide = 2;
} else if (slide == 2){
$('.slide-container').css('transform', 'translateX(-0vw)');
slide = 1;
}
})
$('.next').on('click', function(){
if (slide == 1){
$('.slide-container').css('transform', 'translateX(-100vw)');
slide = 2;
} else if (slide == 2){
$('.slide-container').css('transform', 'translateX(-200vw)');
slide = 3;
}
})
- ์ฌ๋ผ์ด๋๋ฅผ ๋ฒํผ์ผ๋ก ์กฐ์ํ์ฌ ์์ง์ด๋ ค๋ฉด ํ์ฌ ๋ด๊ฐ ๋ณด๋ ์ฌ๋ผ์ด๋๊ฐ ๋ช ๋ฒ์งธ์ธ์ง ๊ธฐ์ค์ด ํ์ํ๋ค.
- ์ฐ์ ์ฒซ ์ด๋ฏธ์ง๋ฅผ 1๋ฒ์ผ๋ก ์ ํ๊ณ , ๋๋ฒ์งธ ๋๊ทธ๋ผ๋ฏธ ๋ฒํผ์ ํด๋ฆญํ์ ๋ 2๋ฒ ์ฌ๋ผ์ด๋๋ก, ์ธ๋ฒ์งธ ๋๊ทธ๋ผ๋ฏธ ๋ฒํผ์ ํด๋ฆญํ์ ๋ 3๋ฒ ์ฌ๋ผ์ด๋๋ก ๊ฐ ์ ์๊ฒ ํด์ฃผ์๋ค.
- ์ฌ๋ผ์ด๋๋ฅผ ์ฎ๊ธด ํ์๋ ํ์ฌ ๋ด๊ฐ ๋ณด๋ ์ฌ๋ผ์ด๋๊ฐ ๋ฐ๋๋ ๊ฒ์ด๋ฏ๋ก, ํด๋นํ๋ ์ฌ๋ผ์ด๋ ๋ฒํธ๋ฅผ ์ง์ ํด์ฃผ์๋ค.
- ์ด์ , ๋ค์ ๋ฒํผ์ ๊ฒฝ์ฐ ๋ด๊ฐ ํน์ ์ฌ๋ผ์ด๋์์ ์ด์ ๋ฒํผ์ ๋๋ฅด๋ฉด ์ด๋ค ์ฌ๋ผ์ด๋๊ฐ ๋์ค๊ณ , ๋ค์ ๋ฒํผ์ ๋๋ฅด๋ฉด ์ด๋ค ์ฌ๋ผ์ด๋๊ฐ ๋์ค๋์ง ์์น๋ฅผ ์ก์์ฃผ๊ณ , ํด๋น ์์น์ ์ฌ๋ผ์ด๋ ๋ฒํธ๋ฅผ ์ง์ ํด์ฃผ์๋ค.
728x90
๋ฐ์ํ