活动倒计时的做法

此篇用vue项目作为例子

首先再页面加载的时候拿到活动的当前时间、截止时间。

第二步贴代码

复制代码
复制代码
<template>
  <div class="countdown">
    <div class="countdown-time">
      <span class="countdown-word">{{countdownDateNow.days|splitTime(0)}}</span>
      <span class="countdown-word">{{countdownDateNow.days|splitTime(1)}}</span>
    </div>
    <div class="countdown-time">
      <span class="countdown-word">{{countdownDateNow.hours|splitTime(0)}}</span>
      <span class="countdown-word">{{countdownDateNow.hours|splitTime(1)}}</span>
    </div>
    <div class="countdown-time">
      <span class="countdown-word">{{countdownDateNow.minutes|splitTime(0)}}</span>
      <span class="countdown-word">{{countdownDateNow.minutes|splitTime(1)}}</span>
    </div>
    <div class="countdown-time">
      <span class="countdown-word">{{countdownDateNow.seconds|splitTime(0)}}</span>
      <span class="countdown-word">{{countdownDateNow.seconds|splitTime(1)}}</span>
    </div>
  </div>
</template>
<script>
const moment = require('moment');

export default {
  // props: {
  //   countdownDate: {
  //     type: Object,
  //     default() {
  //       return {};
  //     },
  //   },
  // },
  data() {
    return {
      // 本来countdownDate是在props中传递过来的
countdownDate: { currentTime: "2020-02-15 13:39:45", days: "00", endTime: "2020-02-16 00:00:00", hours: 10, minutes: 18, seconds: 25 }, // countdownDateNow: this.countdownDate, countdownDateNow: {}, // 本来直接用countdownDateNow: this.countdownDate, 现在是在mounted中获取 }; }, filters: { splitTime(str, pos) { return String(str).charAt(pos); }, }, methods: { countdown() { const activityTime = moment(this.countdownDate.endTime).format('YYYY-MM-DD HH:mm:ss'); const currentTime = moment(this.countdownDate.currentTime).format('YYYY-MM-DD HH:mm:ss'); let countDown = moment(activityTime).diff(currentTime); console.log(countDown, 'countDown'); const _second = 1000; const _minute = _second * 60; const _hour = _minute * 60; const _day = _hour * 24; let timer; timer = setInterval(() => { countDown -= 1000; if (countDown < 0) { clearInterval(timer); this.countdownDateNow.timeOut = true; return; } // 向下取整 let days = Math.floor(countDown / _day); let hours = Math.floor((countDown % _day) / _hour); let minutes = Math.floor((countDown % _hour) / _minute); let seconds = Math.floor((countDown % _minute) / _second); const addZero = (val) => (val >= 10 ? val : `0${val}` ); // 补0函数 this.countdownDateNow.days = addZero(days); this.countdownDateNow.hours = addZero(hours); this.countdownDateNow.minutes = addZero(minutes); this.countdownDateNow.seconds = addZero(seconds); }, 1000); }, }, mounted() { this.countdownDateNow = this.countdownDate; this.countdown(); console.log(this.countdownDateNow, 'day'); }, }; </script> <style lang="less" type="text/less"> .countdown { background: url("./../img/top-countdown.png") no-repeat center; background-size: contain; margin: 0 auto; height: 35px; width: 310px; color: #08e7fc; font-size: 12px; font-weight: bold; text-align: center; padding-left: 111px; display: flex; .countdown-time { display: flex; align-items: center; justify-content: center; width: 28px; margin-right: 25px; &:nth-child(3) { margin-right: 22px; } &:nth-child(4) { margin-right: 0; } } .countdown-word { margin-right: 2px; } } </style>
复制代码
复制代码

效果图:

 

posted on   byd张小伟  阅读(326)  评论(0编辑  收藏  举报

编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示