JS 倒计时(练习:根据黑马Pink老师)

50 阅读1分钟

image.png

<style>
    * {
      margin: 0;
      padding: 0;
    }

    .box {
      margin: 0 auto;
      width: 12.5rem;
      padding: 1.5rem;
      background: #f5222d;
      text-align: center;

      .day {
        font-size: 1.25rem;
        color: #fff;
        margin-bottom: 1.5rem;
      }

      p {
        font-size: .875rem;
        color: #fff;
        margin-bottom: 1rem;
      }

      .time_box {
        display: flex;
        align-items: center;
        justify-content: center;
        margin-bottom: 1.5rem;
        color: #fff;

        .card {
          width: 2.5rem;
          height: 2.5rem;
          background: #333;
          line-height: 2.5rem;
          margin: 0 .5rem;
          border-radius: .25rem;
        }
      }

      .end {
        font-size: .875rem;
        color: #fff;
      }
    }
  </style>
<div class="box">
    <div class="day">2024-04-26</div>
    <p>下班倒计时</p>
    <div class="time_box">
      <div class="hour card">18</div> :
      <div class="minute card">00</div> :
      <div class="second card">00</div>
    </div>
    <div class="end">18:00:00下班</div>
</div>
<script>
    let timer
    function getCountTime () {
      const date = new Date()
      const dateDay = document.querySelector('.day')
      dateDay.innerHTML = date.toLocaleDateString().replaceAll('\/', '-')
      const nowDate = date.getTime()
      const endDate = new Date('2025-04-26 09:25:00').getTime()
      // 总秒数
      let times = (endDate - nowDate) / 1000
      const [day, hour, minute, second] = formatTime(times)
      document.querySelector('.hour').innerHTML = hour
      document.querySelector('.minute').innerHTML = minute
      document.querySelector('.second').innerHTML = second
      if (times <= 0) {
        clearInterval(timer)
        document.querySelector('.hour').innerHTML = '00'
        document.querySelector('.minute').innerHTML = '00'
        document.querySelector('.second').innerHTML = '00'
      }
    }

    // 格式化时分秒
    function formatTime (s) {
      const day = String(parseInt(s / 60 / 60 / 24)).padStart(2, '0')
      const hour = String(parseInt(s / 60 / 60 % 24)).padStart(2, '0')
      const minute = String(parseInt(s / 60 % 60)).padStart(2, '0')
      const second = String(parseInt(s % 60)).padStart(2, '0')
      return [day, hour, minute, second]
    }

    getCountTime()
    timer = setInterval(() => {
      getCountTime()
    }, 1000)
  </script>