웹사이트를 오픈하기 전에 방문자의 기대감을 높이는 '곧 출시 예정(Coming Soon)' 페이지는 매우 유용한 요소입니다. 이 글에서는 CSS와 JavaScript만을 활용해 배경 이미지와 실시간 카운트다운 타이머가 포함된 출시 예정 페이지를 만드는 방법을 소개합니다.
전체 코드 예시
<!DOCTYPE html>
<html>
<style>
body {
height: 100vh;
font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
margin: 0;
}
.timer {
text-align: center;
font-size: 60px;
margin-top: 0px;
color: white;
}
.bgimg {
background-image: url("https://i.picsum.photos/id/829/800/800.jpg");
height: 100%;
background-position: center;
background-size: cover;
position: relative;
color: white;
font-size: 25px;
}
.middle {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
text-align: center;
}
hr {
margin: auto;
width: 40%;
}
</style>
<body>
<div class="bgimg">
<div class="middle">
<h1>COMING SOON</h1>
<hr />
<h2 class="timer"></h2>
</div>
</div>
<script>
var countDownDate = new Date("June 5, 2022 11:27:15").getTime();
var timeClear = setInterval(function() {
var now = new Date().getTime();
var timeLeft = countDownDate - now;
var days = Math.floor(timeLeft / (1000 * 60 * 60 * 24));
var hours = Math.floor(
(timeLeft % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)
);
var minutes = Math.floor((timeLeft % (1000 * 60 * 60)) / (1000 * 60));
var seconds = Math.floor((timeLeft % (1000 * 60)) / 1000);
document.querySelector(".timer").innerHTML = days + "d " + hours + "h " + minutes + "m " + seconds + "s ";
if (timeLeft < 0) {
clearInterval(timeClear);
document.querySelector(".timer").innerHTML = "Timer Finished";
}
}, 1000);
</script>
</body>
</html>코드 구성 요소 살펴보기
1. CSS 스타일링
.bgimg 클래스는 화면 전체를 채우는 배경 이미지를 담당합니다. background-size: cover; 속성으로 이미지가 어떤 화면 크기에서도 자연스럽게 꽉 차도록 설정하고, background-position: center;로 이미지의 중심 부분이 항상 보이게 합니다.
.middle 클래스는 텍스트와 타이머를 화면 정중앙에 배치하는 역할을 합니다. position: absolute;와 함께 top: 50%; left: 50%;, 그리고 transform: translate(-50%, -50%);를 조합하면 요소를 정확히 가운데 정렬할 수 있습니다.
2. JavaScript 카운트다운 로직
JavaScript 부분은 목표 시각까지 남은 시간을 계산하는 핵심 로직입니다. 작동 원리는 다음과 같습니다.
new Date("June 5, 2022 11:27:15").getTime()으로 목표 날짜를 밀리초 단위 타임스탬프로 변환합니다.setInterval()함수가 1초(1000밀리초)마다 실행되며 현재 시각과 목표 시각의 차이를 계산합니다.- 남은 시간을 일(d), 시간(h), 분(m), 초(s) 단위로 나누어 화면에 표시합니다.
- 카운트다운이 종료되면
clearInterval()로 반복을 중단하고 "Timer Finished" 메시지를 출력합니다.
3. 활용 팁
실제 프로젝트에 적용할 때는 목표 날짜 문자열을 원하는 출시일로 변경하면 됩니다. 또한 배경 이미지 URL을 자신의 이미지로 교체하고, .timer의 폰트 크기나 색상을 조절해 브랜드 분위기에 맞게 커스터마이징할 수 있습니다.
실행 결과
위 코드를 실행하면 배경 이미지 위에 "COMING SOON" 문구와 함께 남은 시간이 실시간으로 줄어드는 카운트다운 타이머가 표시됩니다.
