JQuery
프로그래스바 만들기
낮햇볕
2022. 3. 16. 19:04
body
<!-- 배경 -->
<div class="warp">
<div class="content"></div>
</div>
<!-- 프로그레스바 -->
<div class="progressbar">
<div class="progress">
</div>
</div>
css
/* content만 주면 위아래 공간이 생겨서
body와 html에 margin0주기 */
html, body {
margin: 0;
padding: 0;
width: 100%;
height: 100%;
}
/* 배경색주기 */
.content{
width: 100%;
height: 1000px;
background-color: aliceblue;
}
.progressbar{
position: fixed;
height: 10px;
top:6px;
right:0;
width: 100%;
/* 맨앞으로 */
z-index: 500;
}
.progressbar > .progress{
background-color:yellowgreen;
width: 0%;/* 프로그래스바 진행정도 */
height: 100%;
/* width -일수록 빠르게 ease는 부드럽게되게 */
transition: width 0.3s ease;/*애니메이션*/
}
jquery
// 스크롤내렸을때지정
window.addEventListener("DOMContentLoaded",function () {
//스크롤이벤트실행
window.addEventListener("scroll",function (e) {
//프로그래스바가있다면 실행할수 있도록if 문작성
if(document.querySelector(".progressbar") != null){//프로그래스바찾으면 null아닐때
setProgress();
}
})
});
function setProgress() {
//스크롤한높이
let currY = document.documentElement.scrollTop
//전체높이
let totalY = document.documentElement.scrollHeight- document.documentElement.clientHeight;
// totalY = document.documentElement.scrollHeight(전체 스크롤길이:3000px) - document.documentElement.clientHeight(현재화면의 길이:280)
//너비에 들어갈 퍼센트
let percentage = (currY/totalY)*100;
document.querySelector(".progress").style.width = percentage + "%";
}
scrollHeight는 3000px
clientHight는 280px