美文网首页
Vue2.0 列表项 倒计时

Vue2.0 列表项 倒计时

作者: 一个冬季 | 来源:发表于2018-09-28 18:38 被阅读13次
test.gif

列表最后的效果如上,你们可以根据自己的需求稍微改改就OK了

 .items {
            display: flex;
            display: -webkit-flex;
            flex-direction: row;
            width: 100%;
            height: auto;
        }

<div id="container">
    <div class="items" v-for="(item,index) in list" :key="index" v-cloak>
        <mycounttime :endtime="item.countTime"></mycounttime>
        </div>
    </div>
</div>

<script type="text/javascript" src="../script/jquery-3.0.0.min.js"></script>
<script type="text/javascript" src="../script/vue_debug.js"></script>
<script>
    var vm;
    $(function () {
        intiView();
    })

    function intiView() {
        Vue.component("mycounttime", {
            props: ['endtime'],
            template: '<span class="fontSize20">{{time}}</span>',
            data: function () {
                return {
                    time: "",
                    flag: false,
                }
            },
            mounted() {
                let self = this;
                let countTime = self.endtime;
                let time = setInterval(function () {
                    if (self.flag) {
                        clearInterval(time);
                    }
                    countTime = countTime - 1000;
                    self.timeDown(countTime);
                }, 1000)
            },
            methods: {
                timeDown(endTime) {
                    if (endTime <= 1000) {
                        console.log(endTime);
                        this.flag = true;
                    }

                    let hour = parseInt(endTime / 1000 / 3600);
                    let min = parseInt((endTime / 1000 - hour * 3600) / 60);
                    let sec = parseInt(endTime / 1000 - hour * 3600 - min * 60);
                    this.time = hour + ":" + min + ":" + sec;
                },
            },
        });
        vm = new Vue({
            el: "#container",
            data: {
                list: [{"countTime":1000 * 60 * 50},{"countTime":1000 * 60 * 40},{"countTime":1000 * 5}],
            },
            methods: {}
        });
    }
</script>

需求增加:如果倒计时的时间到了,那么就要隐藏某些界面如何实现呢?
html

.items {
            display: flex;
            display: -webkit-flex;
            flex-direction: row;
            width: 100%;
            height: auto;
        }

<div id="container">
    <div class="items" v-for="(item,index) in list" :key="index" v-cloak>
        <mycounttime :endtime="item.countTime"  :indexvalue="index"></mycounttime>
        <div v-show="item.showNormal" style="margin-left: 10">
            <button style="background: #0A9DCD; color: white" >
                确定按钮
            </button>
        </div>
    </div>
</div>

js

<script type="text/javascript" src="./script/vue_debug.js"></script>
<script type="text/javascript" src="./script/jquery-3.0.0.min.js"></script>
<script type="text/javascript">
    var vm;
    $(function () {
        intiView();
    })

    function intiView() {
        Vue.component("mycounttime", {
            props: ['endtime','indexvalue'],
            template: '<span class="fontSize20">{{time}}</span>',
            data: function () {
                return {
                    time: "",
                    flag: false,
                }
            },
            mounted() {
                let self = this;
                let countTime = self.endtime;
                var indexvalue = self.indexvalue;
                let time = setInterval(function () {
                    if (self.flag) {
                        var item = vm.list[indexvalue];
                        item.showNormal = false;
                        Vue.set(vm.list, indexvalue, item);
                        clearInterval(time);
                    }
                    countTime = countTime - 1000;
                    self.timeDown(countTime);
                }, 1000)
            },
            methods: {
                timeDown(endTime) {
                    if (endTime <= 1000) {
                        this.flag = true;
                    }

                    let hour = parseInt(endTime / 1000 / 3600);
                    let min = parseInt((endTime / 1000 - hour * 3600) / 60);
                    let sec = parseInt(endTime / 1000 - hour * 3600 - min * 60);
                    this.time = hour + ":" + min + ":" + sec;
                },
            },
        });
        vm = new Vue({
            el: "#container",
            data: {
                list: [],
                showNormal:false,
            },
            methods: {}
        });

        var list=[];
        for (var i=0;i<3;i++){
            var item = new Object();
            item.showNormal = true;
            if (i==0){
                item.countTime = 1000 * 60 * 50;
            } else if (i==1){
                item.countTime = 1000 * 60 * 40;
            } else if (i==2){
                item.countTime = 1000  * 5;
            }
            list.push(item);
        }
        vm.list = vm.list.concat(list);

    }
</script>

效果图


GIF.gif

相关文章

  • Vue2.0 列表项 倒计时

    列表最后的效果如上,你们可以根据自己的需求稍微改改就OK了 需求增加:如果倒计时的时间到了,那么就要隐藏某些界面如...

  • 列表项倒计时

  • 列表

    1、无序列表: 无序列表始于 标签 每个列表项始于 标签 2、有序列表: 有序列表也是一列项目,列表项目使用数字...

  • 有序列表与无序列表

    1.有序列表: 有序列表同样,有序列表也是一列项目,列表项目使用数字进行标记。有序列表始于标签 。每个列表项始于 ...

  • Element-UI vue2.0版本的table样式补丁

    有各种原因依然要得用vue2.0, el-tabel有固定列的时候错乱问题

  • 2018-05-31

    我的世界 #我的世界# * 这是一个列表项 这是第一列表项中的第二个段落 * 这是列表的另一个项目

  • Markdown语法测试

    我是一个标题# 我也是一个标题## 我是引用嵌套引用多重嵌套试试这里是第几块引用块中的标题 列表项1 列表项2 列...

  • markdown常用的语法

    列表 有序列表: 列表项 1 列表项 2 无序列表: 列表项 1 列表项 2 列表项 3 列表项 4 列表项缩进两...

  • 2021-09-13 linux内核理解——系统内存管理功能4

    虚拟页式存储管理加了“虚拟”两个字后,页表项发生了一些变化,即从之前的2列扩展成了6列。如下图所示,第三列状态位P...

  • Markdown 练习

    认识和入门Markdown 一级标题 二级标题 三级标题 列表项1 列表项2 列表项3 列表项4 列表项 列表项 ...

网友评论

      本文标题:Vue2.0 列表项 倒计时

      本文链接:https://www.haomeiwen.com/subject/yrapoftx.html