안녕하세요!

블랙프라이데이 기간에 자주 쓰이는 이벤트,프로모션 마감 타이머를 자바스크립트로 제작해보았습니다!

저는 시,분,초로 나타내주었습니다.

 

🔥실행 결과

1. html 파일

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
    <div id="count-down">
      <dl>
        <dt class="hour"></dt>
      </dl>
      <dl>
        <dt class="min"></dt>
      </dl>
      <dl>
        <dt class="sec"></dt>
      </dl>
    </div>
    </div>
    <script src="src/app.js"></script>
</body>
</html>

 

2. 스크립트 파일

<script>
  var hour = document.querySelector(".hour");
  var min = document.querySelector(".min");
  var sec = document.querySelector(".sec");
  var dday=document.querySelector("#count-down dt");

  var T=setInterval(diffDay, 1000);
  var masTime = new Date;
    masTime.setFullYear(2022,10,15); // 자바스크립트에서 월과 요일은 0부터 세므로 11월은 10이 됨.
    masTime.setHours(17,0,0,0); // 17시를 의미함
    
    var masTime = Math.round((masTime.getTime()-new Date().getTime())/1000);

  function diffDay() {

    masTime = masTime-1; //1초씩 감소
 
   
    var d_sec2=masTime%3600; // 남은 초를 1시간 3600초 단위로 계산후 나머지 초
    var d_hours=String((masTime-d_sec2)/3600).padStart(2,"0"); // 시간 계산

    var d_sec3=String(d_sec2 % 60).padStart(2,"0"); // 남은 초를 60초 단위로 계산후 나머지 초
    var d_mins=String((d_sec2 - d_sec3) / 60).padStart(2,"0"); // 분 계산


    hour.innerText = `${d_hours}` + ":";
    min.innerText = `${d_mins}`  + ":";  
    sec.innerText = `${d_sec3}`; 

    if(masTime<=0){
    clearInterval(T);
    hour.innerText = `00` + ":";
    min.innerText = `00`  + ":";  
    sec.innerText = `00`; 
    } //디데이가 되면 00:00:00으로 표시
}

</script>

저는 두 자리로 표현하기 위해 .padStart(2,"0");를 추가하였습니다.

 

3.CSS 파일

<style>
  #count-down {
    width: 1000px;
    height: 380px;
    line-height: 380px;
    background-color: #c8c8c8;
    color: #fff;
    font-size: 72px;
    text-align: center;
    display: flex;
    justify-content: center;
    align-items: center;
  }
</style>

 

*본 게시물은 학습을 위한 개인 기록용입니다.

+ Recent posts