copy ์ฌ์ดํธ hb paper
html / css ์์ญ
display flex ๋ฅผ ์ด์ฉ
์ฌ๋ผ์ด๋ ๋ฐ์ค์์ ์ฌ๋ผ์ด๋๋ค์ ๋ฐฐ์นํด ๊ฐ๋ก๋ก ๋ฐฐ์นํด์ค๋ค
์ ์ฒด ๋ฐ์ค๋ฅผ ๋ง๋ค์ด overflow:hidden ์ ์ฌ์ฉํด ์ฌ๋ผ์ด๋ ์์ญ์ ๊ฐ๋ ค์ฃผ๊ณ ์๋์ฐ ์ฐฝ์ ๊ฝ ์ฐจ๊ฒ ๋ฐฐ์น
html
<div class="main-slide">
<div class="slide-box">
<div class="slide-box__main">
<a href="#">
<div class="text-box">
<p>๊ทธ ์์คํ ๊ฐ์น๋ฅผ ์๊ธฐ์ ์ฐ๋ฆฌ๋ ๋์๊ฐ๋ ค๊ณ ํฉ๋๋ค.</p>
<h3>์์ฐ์ผ๋ก, ์ค๋งํธํ๊ฒ</h3>
</div>
<img src="./images/mv_01.jpg" alt="">
</a>
</div>
<div class="slide-box__main">
<a href="#">
<div class="text-box">
<p>๊ทธ ์์คํ ๊ฐ์น๋ฅผ ์๊ธฐ์ ์ฐ๋ฆฌ๋ ๋์๊ฐ๋ ค๊ณ ํฉ๋๋ค.</p>
<h3>2</h3>
</div>
<img src="./images/mv_02.jpg" alt="">
</a>
</div>
<div class="slide-box__main">
<a href="#">
<div class="text-box">
<p>๊ทธ ์์คํ ๊ฐ์น๋ฅผ ์๊ธฐ์ ์ฐ๋ฆฌ๋ ๋์๊ฐ๋ ค๊ณ ํฉ๋๋ค.</p>
<h3>3</h3>
</div>
<img src="./images/mv_03.jpg" alt="">
</a>
</div>
</div>
</div>
css
.main-slide {
width: 100%;
height: 100%;
overflow: hidden;
position: fixed;
.slide-box {
height: 100%;
width: 100%;
display: flex;
position: relative;
&__main {
height: 100%;
width: 100%;
// flex: none;
flex: 0 0 auto;
/* flex-grow: 1; flex-shrink: 1; flex-basis: auto; */
a {
width: 100%;
height: 100%;
display: block;
.text-box {
position: absolute;
top: 50%;
width: 100%;
text-align: center;
color: #fff;
p {
font-size: 18px;
}
h3 {
margin-top: 20px;
font-size: 50px;
font-weight: 900;
}
}
img {
width: 100%;
height: 100%;
object-fit: cover;
}
}
}
}
}
์๋ฐ์คํฌ๋ฆฝํธ
// document.getElementsByClassName()
// dom ์ ๊ฐ์ ธ์ค๊ธฐ์ํด์ ์ฌ์ฉ
// document objet model ๊ฐ์ฒด์
// html ์์ ๋ง๋ ๊ฐ์ฒด๋ฅผ ๊ฐ์ง๊ณ ์ ์์ฑ์ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ๋ฐ๊ฟ
//---------------------------------------------------------------
//์ ์ฒด ์ฌ๋ผ์ด๋ ํ ์ ํ
const slideBox = document.querySelector('.slide-box');
console.log('slideBox: ', slideBox);
//๊ฐ์๋ ์ฌ๋ผ์ด๋ - class์ ํ์ ์์ ์ ์ฒด ์ ํ (๊ฐ์ ํด๋์ค๋ช
์ด ์ฌ๋ฌ๊ฐ์ด๊ธฐ ๋๋ฌธ)
const slides = document.querySelectorAll('.slide-box__main');
console.log('slides:', slides);
//ํ์ฌ ์ฌ๋ผ์ด๋์ ์ธ๋ฑ์ค ๋ฒํธ์ง์ ํ๊ธฐ
let currentIndex = 0;
//์ฌ๋ผ์ด๋ ๋ง๋ค ํจ์ ๋ง๋ค๊ธฐ
function mainSlide() {
currentIndex++; // ++ ์ฆ๊ฐ์ฐ์ฐ์) ํผ์ฐ์ฐ์ +1
//์ฌ๋ผ์ด๋๊ฐ ๋๋๋ฉด ๋ค์ ์ฒ์์ผ๋ก ๋์๊ฐ๋ if๋ฌธ
//slides ์ ๊ฐฏ์๊ฐ ์ธ๋ฑ์ค ๋ฒํธ๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ์๋ 0์ผ๋ก ๋๋ฆฐ๋ค
if (currentIndex >= slides.length) {
currentIndex = 0;
}
// ์ธ๋ฑ์ค์ ๊ณฑํ๊ธฐ 100 (0*100=0 / 1*100=100 / 2*100=200)
let translatePercent = currentIndex * 100;
// ์ฌ๋ผ์ด๋ ์์น๋ฅผ ์ธํ
์ค * 100 ์ ๊ณฑํ ๊ฐ๋งํผ ์์น์ด๋
slideBox.style.transform = `translate(-${translatePercent}%)`;
}
//์ฌ๋ผ์ด๋ํน ์ ํ์ ์ฌ๋ผ์ด๋์์น๋ณ๊ฒฝ์ผ๋ก ๋์ด๊ฐ๊ฒ ์์ฑํ ํจ์ ๋ฃ์ด์ค
slideBox.addEventListener('click', mainSlide);
//setIntervalํจ์๋ก ๋ด๊ฐ๋ง๋ mainSlide ํจ์๊ฐ 2์ด๋ง๋ค ์๋ ์คํ
setInterval(mainSlide, 2000);
๋ค์๋ฒ์ ํ์ด์ง ๋ค์ด์ ์ ๋ฃ์ด์ ๋ค์ ๋์
setInterval ์ฐธ๊ณ ๋งํฌ
'javascript๐ช > ์๋ฐ์คํฌ๋ฆฝํธ ๊ณต๋ถ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Animate.css ํ์ฉ fadeInํจ๊ณผ ๊ฑธ๊ธฐ (0) | 2023.10.23 |
---|---|
์๋ฐ์คํฌ๋ฆฝํธ๋ก ์ฌ๋ผ์ด๋ ์ธ๋์ผ์ดํฐ indicator ๊ตฌํํ๊ธฐ (active or forEach) (0) | 2023.10.23 |
function ์ด๋? (0) | 2023.09.05 |
์๋ฐ์คํฌ๋ฆฝํธ ํท๊ฐ๋ฆฌ๋ ๋ ผ๋ฆฌ์ฐ์ฐ์ : || (or) $$ (and) !(not) (0) | 2023.08.30 |
๋ณ์๊ฐ ์ ์ฅ๋๋ ๋ฐฉ๋ฒ variable types (primitive or object) (0) | 2023.08.29 |
๋๊ธ