Computer >> 컴퓨터 >  >> 프로그래밍 >> CSS

CSS와 JavaScript로 '곧 출시 예정(Coming Soon)' 페이지 만드는 방법

웹사이트를 오픈하기 전에 방문자의 기대감을 높이는 '곧 출시 예정(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" 문구와 함께 남은 시간이 실시간으로 줄어드는 카운트다운 타이머가 표시됩니다.

CSS와 JavaScript로  곧 출시 예정(Coming Soon)  페이지 만드는 방법