vue2-countdown vue活动倒计时组件

题目:基于vue2.x的活动倒计时组件

最近公司在写一个移动商城的项目,涉及到拼团的内容,于是就有了倒计时的需求。一时没有想法,就在github上找到了vue2-countdown,将该项目引入到了我公司的商城项目中,发现了一些问题,在github上看了一下,好像vue2-countdown夭折了,一年多没有跟新了,而且还存在一些问题:(,特写此文来记录一下使用及修改过程。

项目是用还是很简单的

  1. Install

    npm install vue2-countdown --save

  • Usage

    import CountDown from 'vue2-countdown'
    components: { CountDown },
    methods: {

     countDownS_cb: function (x) {
       console.log(x)
     },
     countDownE_cb: function (x) {
       console.log(x)
     }

    }

  • 列表项目

    <count-down

       v-on:start_callback="countDownS_cb(1)"
       v-on:end_callback="countDownE_cb(1)"
       :currentTime="1481450106"
       :startTime="1481450110"
       :endTime="1481450115"
       :tipText="'距离开始文字1'"
       :tipTextEnd="'距离结束文字1'"
       :endText="'结束自定义文字2'"
       :dayTxt="'天'"
       :hourTxt="'小时'"
       :minutesTxt="'分钟'"
       :secondsTxt="'秒'">

    </count-down>

  • Options
    count-down里面的一些,上文步骤2中的参数,详情见上文链接。

vue2-countdown 项目存在的一些问题:

  • 无法自定义提示文字
    自定义提示文字
    作者在项目中注释掉了,导致我们在引入组建添加了此配置的话也无法显示提示语。
    解决方法:

       1.在node_modules中找到安装的vue2-countdown文件,修改vue2-countdown->lib->vue2-countdown.vue文件,将注释消除。
       2.其实整个项目有用的只有lib/vue2-countdown.vue文件,所有也可以像小编将该文件内容复制一份到自己的项目,新建一个vue文件,作为组件,然后将组件的注释解除。
    
    
  • 倒计时逻辑问题
    引入后发现无论我们传什么时间过去,倒计时都是结束时间-开始时间重新计算,并非根据当前时间计算结束时间-当前时间的值,所以我们怎么配置,怎么刷新结果都是(end-start),其实好像都和当前时间没有关系(这个让小编头痛了好久,一直以为是自己哪里写错了,后来发现是作者自己的代码逻辑有点问题)
    解决方法
    图片描述
    将原先的this.start改为this.current。作者原先虽然获取到了传入的当前时间戳,但在method中却没有使用。将start改为current可以保证输出的是当前时间距离结束时间的时间长度。

总结:虽然按上述方法解决我所急需的一些需求,但感觉vue2-countdown还有一些可以完善的地方,小编会在后续的文章中更新相关信息,并提供一个npm供大家下载。

1024祝程序员们节日快乐,希望你们今天不像小编一样,在加班,呜呜~~(>_<)~~

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个使用 VueElement-UI 实现的亚运会倒计时: 1. 首先,需要安装 VueElement-UI: ```bash npm install vue npm install element-ui ``` 2. 在 Vue 组件中引入 Element-UI 的倒计时组件和样式: ```vue <template> <div class="countdown"> <el-countdown :time="countdown" :auto-start="false" @finish="handleFinish"> <span slot="days">{{ days }} 天</span> <span slot="hours">{{ hours }} 时</span> <span slot="minutes">{{ minutes }} 分</span> <span slot="seconds">{{ seconds }} 秒</span> </el-countdown> </div> </template> <script> import { ElCountdown } from 'element-ui' export default { components: { ElCountdown }, data() { return { countdown: 0 } }, computed: { days() { return Math.floor(this.countdown / (24 * 60 * 60 * 1000)) }, hours() { return Math.floor((this.countdown % (24 * 60 * 60 * 1000)) / (60 * 60 * 1000)) }, minutes() { return Math.floor((this.countdown % (60 * 60 * 1000)) / (60 * 1000)) }, seconds() { return Math.floor((this.countdown % (60 * 1000)) / 1000) } }, methods: { startCountdown() { const endDate = new Date('2022-09-10T00:00:00.000Z') const now = new Date() this.countdown = endDate - now }, handleFinish() { console.log('倒计时结束') } }, mounted() { this.startCountdown() } } </script> <style> .countdown { display: flex; justify-content: center; align-items: center; height: 100vh; font-size: 24px; } </style> ``` 3. 在组件中定义一个倒计时的结束时间(即亚运会的开幕时间),并使用计算属性将倒计时的毫秒数转换为天、小时、分钟和秒。 4. 在组件的 mounted 钩子函数中调用 startCountdown 方法,该方法会计算倒计时的毫秒数并将其赋值给 countdown 变量。 5. 最后,将倒计时组件添加到模板中,并设置好样式即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值