翻页-时钟

<html>

<head>
  <style>
    .seconds,
    .hours,
    .minutes {
      position: relative;
    }

    .base {
      width: 130px;
      height: 100px;
      overflow: hidden;
    }

    .text {
      text-align: center;
      font-size: 100px;
      font-weight: 900;
      color: #fff;
    }

    .top {
      line-height: 200px;
      border-radius: 4px 4px 0 0;
      background-color: #333;
    }

    .bottom {
      line-height: 0;
      border-radius: 0 0 4px 4px;
      background-color: #333;
    }

    .flip {
      position: absolute;
      top: 0;
      transform-origin: bottom;
      border-radius: 4px 4px 0 0;
      z-index: 1;
    }

    .flip-face {
      position: absolute;
      z-index: 1;
      background-color: #333;
      line-height: 200px;
    }

    .flip-back {
      position: absolute;
      background-color: #333;
      line-height: 0;
      transform: perspective(500px) rotateX(0deg) rotateY(-180deg) rotate(180deg);
    }
    .times{
      width: 400px;
      display: flex;
      justify-content: space-between;

    }
  </style>
</head>

<body>
  <div class="times">
    <div class="hours" id="hours">
      <div class="top base text" id="htop">0</div>
      <div class="flip base" id="hflip">
        <div class="flip-face base text" id="hflip-face">0</div>
        <div class="flip-back base text" id="hflip-back">0</div>
      </div>
      <div class="bottom base text" id="hbottom">0</div>
    </div>
    <div class="minutes" id="minutes">
      <div class="top base text" id="mtop">0</div>
      <div class="flip base" id="mflip">
        <div class="flip-face base text" id="mflip-face">0</div>
        <div class="flip-back base text" id="mflip-back">0</div>
      </div>
      <div class="bottom base text" id="mbottom">0</div>
    </div>
    <div class="seconds" id="seconds">
      <div class="top base text" id="top">0</div>
      <div class="flip base" id="flip">
        <div class="flip-face base text" id="flip-face">0</div>
        <div class="flip-back base text" id="flip-back">0</div>
      </div>
      <div class="bottom base text" id="bottom">0</div>
    </div>
  </div>

  <script>
    //seconds
    const seconds = document.querySelector('#seconds')
    const Top = seconds.querySelector('#top')
    const flip = seconds.querySelector('#flip')
    const flipFace = flip.querySelector('#flip-face')
    const flipBack = flip.querySelector('#flip-back')
    const bottom = seconds.querySelector('#bottom')
    let timer = null, stimer = null, mtimer = null, htimer = null
    //minutes
    const minutes = document.querySelector('#minutes')
    const mTop = minutes.querySelector('#mtop')
    const mflip = minutes.querySelector('#mflip')
    const mflipFace = mflip.querySelector('#mflip-face')
    const mflipBack = mflip.querySelector('#mflip-back')
    const mbottom = minutes.querySelector('#mbottom')
    //hours
    const hours = document.querySelector('#hours')
    const hTop = hours.querySelector('#htop')
    const hflip = hours.querySelector('#hflip')
    const hflipFace = hflip.querySelector('#hflip-face')
    const hflipBack = hflip.querySelector('#hflip-back')
    const hbottom = hours.querySelector('#hbottom')

    const oneCycle = (time, timer) => {
      const seconds = time.seconds
      const minutes = time.minutes
      const hours = time.hours

      let frame = 0
      let mframe = 0
      let hframe = 0
      //init
      flipFace.style.zIndex = 1
      flipBack.style.zIndex = 0
      flip.style.transform = 'perspective(500px) rotateX(0deg)'
      flipFace.innerHTML = seconds
      bottom.innerHTML = seconds

      mflipFace.innerHTML = minutes
      mbottom.innerHTML = minutes

      hflipFace.innerHTML = hours
      hbottom.innerHTML = hours

      if (minutes === 59 && seconds === 59) {
        htimer = setInterval(() => {
          hframe++
          if (hframe > 50) {
            clearInterval(htimer)
            return
          }
          if (hframe === 1) {
            hTop.innerHTML = (hours + 1) === 24 ? 0 : (hours + 1)
            hflipBack.innerHTML = (hours + 1) === 24 ? 0 : (hours + 1)
          }

          if (hframe <= 25) {
            hflipFace.style.zIndex = 1
            hflipBack.style.zIndex = 0
          } else {
            hflipFace.style.zIndex = 0
            hflipBack.style.zIndex = 1
          }

          hflip.style.transform = `perspective(500px) rotateX(-${180 * hframe / 50}deg)`
        }, 20)
      }

      if (seconds === 59) {
        mtimer = setInterval(() => {
          mframe++
          if (mframe > 50) {
            clearInterval(mtimer)
            return
          }
          if (mframe === 1) {
            mTop.innerHTML = (minutes + 1) === 60 ? 0 : (minutes + 1)
            mflipBack.innerHTML = (minutes + 1) === 60 ? 0 : (minutes + 1)
          }

          if (mframe <= 25) {
            mflipFace.style.zIndex = 1
            mflipBack.style.zIndex = 0
          } else {
            mflipFace.style.zIndex = 0
            mflipBack.style.zIndex = 1
          }

          mflip.style.transform = `perspective(500px) rotateX(-${180 * mframe / 50}deg)`
        }, 20)
      }

      timer = setInterval(() => {
        frame++
        if (frame > 50) {
          clearInterval(timer)
          return
        }
        if (frame === 1) {
          Top.innerHTML = (seconds + 1) === 60 ? 0 : (seconds + 1)
          flipBack.innerHTML = (seconds + 1) === 60 ? 0 : (seconds + 1)
        }

        if (frame <= 25) {
          flipFace.style.zIndex = 1
          flipBack.style.zIndex = 0
        } else {
          flipFace.style.zIndex = 0
          flipBack.style.zIndex = 1
        }

        flip.style.transform = `perspective(500px) rotateX(-${180 * frame / 50}deg)`
      }, 20)
    }
    const cycle = () => {
      stimer = setInterval(() => {
        const date = new Date()
        const time = {
          seconds: date.getSeconds(),
          minutes: date.getMinutes(),
          hours: date.getHours()
        }
        console.log('time is', time);
        oneCycle(time, timer)
      }, 1000)
    }
    cycle()

    document.onvisibilitychange = function () {
      if (document.visibilityState === 'visible') {
        cycle()
      } else {
        clearInterval(timer)
        clearInterval(stimer)
        clearInterval(mtimer)
        clearInterval(htimer)
      }
    }
  </script>
</body>

</html>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ava实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),可运行高分资源 Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值