<div style="overflow: hidden">
<!-- 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>
.slide-container {
width: 300vw;
/* vw : 브라우저 폭 = 100vw */
transition: all 1s;
}
transform: translateX(-100vw);
혹은
margin-left: -100vw;
두 가지 다 같은 방식으로 저걸 실행해보면 2번째 사진이 보이는 걸 확인할 수 있음.
<button class="slide-1">1</button>
<button class="slide-2">2</button>
<button class="slide-3">3</button>
$(".slide-2").on("click", function () {
// transform: translateX(-100vw) 해달라~
$(".slide-container").css("transform", "translateX(-100vw)");
});
$(".slide-3").on("click", function () {
// transform: translateX(-200vw) 해달라~
$(".slide-container").css("transform", "translateX(-200vw)");
});
$(".slide-1").on("click", function () {
// transform: translateX 아무것도 없던 상태로~ 해달라~
// $(".slide-container").css("transform", "");
$(".slide-container").css("transform", "translateX(0vw)");
});
<button class="next">다음</button>
<button class="before">이전</button>
// 다음 버튼 누르면
// 지금 보이는 사진이 1이면 2번 사진 보여주세요
// 지금 보이는 사진이 2이면 3번 사진 보여주세요
let 현재사진 = 1;
$(".next").on("click", function () {
if (현재사진 === 1) {
$(".slide-container").css("transform", "translateX(-100vw)");
현재사진++;
} else if (현재사진 === 2) {
$(".slide-container").css("transform", "translateX(-200vw)");
현재사진++;
}
});
현재사진을 변수로 지정해 초깃값을 정해주고 옆으로 넘길 때마다 숫자 추가 ++ 해주어야함
$(".next").on("click", function () {
$(".slide-container").css(
"transform",
"translateX(-" + 현재사진 + "00vw)"
);
현재사진++;
});
console.log("-" + 현재사진 + "00vw");
사진이 3장이 아니라 여러 장일 경우 else if
~ 를 계속 추가해줄 것이아니라 이렇게 코드를 바꿈으로써 4장이 넘어가도 계속 옆으로 넘어가게 설정
$(".before").on("click", function () {
if (현재사진 === 3) {
$(".slide-container").css("transform", "translateX(-100vw)");
현재사진--;
} else if (현재사진 === 2) {
$(".slide-container").css("transform", "translateX(0vw)");
현재사진--;
}
});
window.addEventListener("scroll", function () {
// window.scrollY
// window.pageYOffset
// window.scrollTo(x,y)
// window.scrollBy(0,100)
});
// jquery형 scrollY랑 똑같음 ()사이에 숫자 넣으면 그렇게 밑으로 내려줌
window.scrollY
orwindow.pageYOffset
: 유저가 얼마나 스크롤바 내렸나
window.scrollTo(0,100)
: x->y까지 강제로 스크롤하기
window.scrollBy(0,100)
: 현재 위치에서 100만큼 스크롤
(원래 둘다 순간이동함-> 스르륵 내려오는 건 부트스트랩 때문)
:root {
scroll-behavior: auto
}
설정해 놓으면 원래 상태로 돌아옴
<nav class="navbar navbar-light bg-light">
<div class="container-fluid">
<span class="navbar-brand">JSShop</span>
<span class="ms-auto mx-3 badge bd-dark">Dark 🔄</span>
<button class="navbar-toggler" type="button">
<span class="navbar-toggler-icon"></span>
</button>
</div>
<div id="widthbar"></div>
</nav>
.navbar {
/* 상단고정 */
position: fixed;
width: 100%;
/* 앞으로 보내기, 뒤로 보내기 */
z-index: 5;
}
.navbar-brand {
font-size: 30px;
transition: all 1s;
}
근데 여기서 문제가 있었다
부트스트랩에서 자동으로 상단 고정이 안되어있는데 그게 상위여서, 내가 설정한 position: fixed
가 먹히질 않았던 것.
그래서 인터넷을 찾아 해결했다.
fixed-top
을 추가해주면 되었음
<nav class="navbar fixed-top navbar-light bg-light">
...
</nav>
이런식으로 추가하면 된다.
<div style="height: 1000px"></div>
별건 아니지만 그래도 기록하려 넣어봤따. ㅎ
위에서 나온 이벤트 리스너를 이용한다.
$(window).on("scroll", function () {
if (window.scrollY > 100) {
$(".navbar-brand").css("font-size", "20px");
} else {
$(".navbar-brand").css("font-size", "25px");
}
});
박스를 셀렉터로 찾고
.scrollTop
붙이면 스크롤바를 위에서부터 얼마나 내렸는지 알려줌
$(".lorem").on("scroll", function () {
var 스크롤양 = document.querySelector(".lorem").scrollTop;
// console.log(스크롤양);
});
현재 페이지 스크롤양도 .scrollTop
으로 구할 수 있다.
html 태그 찾아서 .scrollTop
붙이면 됨
$(".lorem").on("scroll", function () {
var 스크롤양 = document.querySelector(".lorem").scrollTop;
var 실제높이 = document.querySelector(".lorem").scrollHeight;
console.log(스크롤양, 실제높이);
);
근데 이걸 끝까지 내려도 같아지지가 않음
왜냐면 박스 높이를 계산하지 않은 것이기 떄문
<div style="margin: 50px 10px 0 50px">
<h2>회원 약관</h2>
<!-- overflow-y: 내용물 넘치면 스크롤바 생성해줌 -->
<div
class="lorem"
style="width: 600px; height: 100px; overflow-y: scroll"
>
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quae voluptas
voluptatum minus praesentium fugit debitis at, laborum ipsa itaque
placeat sit, excepturi eius. Nostrum perspiciatis, eligendi quae
consectetur praesentium exercitationem. Lorem ipsum dolor sit amet,
consectetur adipisicing elit. Quae voluptas voluptatum minus praesentium
fugit debitis at, laborum ipsa itaque placeat sit, excepturi eius.
Nostrum perspiciatis, eligendi quae consectetur praesentium
exercitationem. Lorem ipsum dolor sit amet, consectetur adipisicing
elit. Quae voluptas voluptatum minus praesentium fugit debitis at,
laborum ipsa itaque placeat sit, excepturi eius. Nostrum perspiciatis,
eligendi quae consectetur praesentium exercitationem. Lorem ipsum dolor
sit amet, consectetur adipisicing elit. Quae voluptas voluptatum minus
praesentium fugit debitis at, laborum ipsa itaque placeat sit, excepturi
eius. Nostrum perspiciatis, eligendi quae consectetur praesentium
exercitationem.
<!-- 아무 말임 -->
</div>
</div>
div 스크롤바 내린 양 + div가 화면에 보이는 높이 === div 실제높이
일 경우 alert 띄워주세요~
❗️근데 스크롤 내린 양은 정수이기 때문에 끝에서 10px 정도 남기고 짜는 것이 좋음 (나는 4로함.!!)
$(".lorem").on("scroll", function () {
var 스크롤양 = document.querySelector(".lorem").scrollTop;
var 실제높이 = document.querySelector(".lorem").scrollHeight;
var 높이 = document.querySelector(".lorem").clientHeight;
// console.log(스크롤양, 실제높이);
if (스크롤양 + 높이 > 실제높이 - 4) {
alert("약관을 모두 읽었어라");
}
});
.clientHeight
웹디자인기능사 준비로 들었던 인강인데,
이거랑 알고리즘은 일단 잠시 쉬었다가 지금은 타입스크립트와 리액트에 쫌더 집중하려고 한다! (Vue는 아직 고민..)
이제 제대로 맛봤고, 알던 내용도 많아가지고 어느정도 이쯤이면 충분하다고 생각 ㅎㅎㅎ
읽는 내내 코딩애플 음성더빙이 되던걸요? ㅋㅋㅋㅋㅋ 코딩애플 다른 강의도 들으셨나요? 어땠는지 궁금해요!