UI
2023-05-10 05:57
Javascript setInterval()
setInterval(myFunction, 1000); // 매 1000 밀리초마다 myFunction을 동작시킴
javascript결과물

html
<body>
<!-- 일정 시간 누르기 전에 있는 wrapper -->
<section class="preloader shown-area">
<button class="preloader_btn">
<span class="preloader_btn_hold">Hold</span>
</button>
</section>
<section class="header hidden-area">
header
</section>
</body>
htmlcss
body {
background-color: #1e4029;
}
.shown-area {
display: block;
opacity: 1;
}
.hidden-area {
display: none;
opacity: 0;
}
.preloader {
position: absolute;
top: 0;
left: 0;
background-color: #521714;
width: 100%;
height: 100%;
z-index: 999;
}
.preloader_btn {
position: absolute;
top: 50vh;
left: 50vw;
width: 120px;
height: 120px;
border-radius: 50%;
border: 0;
color: rgb(213, 165, 78);
background-color: rgb(30, 64, 41);
margin-top: -60px;
margin-left: -60px;
}
.preloader_btn_hold {
font-size: 19px;
line-height: 20px;
font-weight: 800;
letter-spacing: normal;
}
cssjavascript
const preloaderBtn = document.querySelector('.preloader_btn')
let intervalId = null
let scale = 1
const preloaderHideThreshold = 18
function setPreloaderStyle(scale) {
preloaderBtn.style.transform = `scale(${scale})`
document.querySelector('.preloader_btn_hold').style.opacity = 1 - (scale - 1)
}
preloaderBtn.addEventListener('mousedown', () => {
console.log('mousedown',)
intervalId = setInterval(() => {
scale += 0.175;
setPreloaderStyle(scale)
if (scale >= 1 + preloaderHideThreshold) {
const header = document.querySelector('.header')
document.querySelector('.preloader').classList.add('hidden-area');
header.classList.remove('hidden-area');
header.classList.add('shown-area');
clearInterval(intervalId)
}
}, 10)
})
preloaderBtn.addEventListener('mouseup', () => {
clearInterval(intervalId)
intervalId = setInterval(() => {
scale -= 0.075
setPreloaderStyle(scale)
if (scale <= 1) {
clearInterval(intervalId)
}
})
})
javascript