返回顶部
首页 > 资讯 > 前端开发 > JavaScript >Vue编写炫酷的时钟插件
  • 212
分享到

Vue编写炫酷的时钟插件

2024-04-02 19:04:59 212人浏览 八月长安
摘要

本文实例为大家分享了Vue编写时钟插件的具体代码,供大家参考,具体内容如下 效果图 代码奉上: <template>     <div class="clock"

本文实例为大家分享了Vue编写时钟插件的具体代码,供大家参考,具体内容如下

效果图

代码奉上:

<template>
    <div class="clock">
        <div class="flip">
            <div class="digital front" :data-number="nextTimes[0]"></div>
            <div class="digital back" :data-number="nowTimes[0]"></div>
        </div>
        <div class="flip">
            <div class="digital front" :data-number="nextTimes[1]"></div>
            <div class="digital back" :data-number="nowTimes[1]"></div>
        </div>
        <em class="divider">:</em>
        <div class="flip">
            <div class="digital front" :data-number="nextTimes[2]"></div>
            <div class="digital back" :data-number="nowTimes[2]"></div>
        </div>
        <div class="flip">
            <div class="digital front" :data-number="nextTimes[3]"></div>
            <div class="digital back" :data-number="nowTimes[3]"></div>
        </div>
        <em class="divider">:</em>
        <div class="flip">
            <div class="digital front" :data-number="nextTimes[4]"></div>
            <div class="digital back" :data-number="nowTimes[4]"></div>
        </div>
        <div class="flip">
            <div class="digital front" :data-number="nextTimes[5]"></div>
            <div class="digital back" :data-number="nowTimes[5]"></div>
        </div>
    </div>
</template>

<script>
    export default {
        name: "ClockData",
        data () {
            return {
                duration: 650,
                nowTimes: [],
                nextTimes: [],
                timer: {},
            }
        },
        mounted() {
            this.initDate();
            this.timer = setInterval(() => {
                this.updateTime();
            }, 1000)
        },
        methods: {
            initDate() {
                let now = new Date();
                this.nowTimes = this.getTimeFromDate(new Date(now.getTime() - 1000));
                this.nextTimes = this.getTimeFromDate(now);
            },
            updateTime() {
                let now = new Date();
                let nowTimes = this.getTimeFromDate(new Date(now.getTime() - 1000));
                let nextTimes = this.getTimeFromDate(now);;
                for (let i = 0; i < 6; i++) {
                    if (nowTimes[i] !== nextTimes[i]) {
                        this.setSpin(i, nowTimes[i], nextTimes[i]);
                    }
                }
            },
            setSpin(index, nowTime, nextTime) {
                let nodes = document.querySelectorAll(".flip");
                nodes[index].classList.add('running');
                this.nowTimes.splice(index, 1, nowTime);
                this.nextTimes.splice(index, 1, nextTime);
                setTimeout(() => {
                    nodes[index].classList.remove('running');
                    this.nowTimes.splice(index, 1, nextTime);
                }, this.duration)
            },
            getTimeFromDate(date) {
                let numTime = [];
                let timeStr = date
                    .toTimeString()
                    .slice(0, 8)
                    .split(":")
                    .join("");
                for (let i = 0; i < timeStr.length; i++) {
                    numTime.push(parseInt(timeStr[i]));
                }
                return numTime;
            }
        },
        destroyed() {
            // 销毁定时器
            clearInterval(this.timer);
        }
    }
</script>

<style scoped>
    .clock {
        display: flex;
    }
    .clock .divider {
        font-size: 66px;
        line-height: 102px;
        font-style: nORMal;
    }
    .clock .flip {
        position: relative;
        width: 60px;
        height: 100px;
        margin: 2px;
        font-size: 66px;
        line-height: 100px;
        text-align: center;
        background: white;
        border: 1px solid black;
        border-radius: 12px;
    }
    .clock .flip .digital::before, .clock .flip .digital::after {
        position: absolute;
        content: attr(data-number);
        left: 0;
        right: 0;
        color: white;
        background: black;
        overflow: hidden;
        -WEBkit-perspective: 160px;
        perspective: 160px;
    }
    .clock .flip .digital::before {
        top: 0;
        bottom: 50%;
        border-bottom: 1px solid #666;
        border-radius: 10px 10px 0 0;
    }
    .clock .flip .digital::after {
        top: 50%;
        bottom: 0;
        line-height: 0;
        border-radius: 0 0 10px 10px;
    }
    .clock .flip .back::before,
    .clock .flip .front::after {
        z-index: 1;
    }
    .clock .flip .back::after {
        z-index: 2;
    }
    .clock .flip .front::before {
        z-index: 3;
    }
    .clock .flip .back::after {
        -webkit-transform-origin: center top;
        transform-origin: center top;
        -webkit-transform: rotateX(0.5turn);
        transform: rotateX(0.5turn);
    }
    .clock .flip.running .front::before {
        -webkit-transform-origin: center bottom;
        transform-origin: center bottom;
        -webkit-animation: frontFlipDown 0.6s ease-in-out;
        animation: frontFlipDown 0.6s ease-in-out;
        -webkit-backface-visibility: hidden;
        backface-visibility: hidden;
    }
    .clock .flip.running .back::after {
        -webkit-animation: backFlipDown 0.6s ease-in-out;
        animation: backFlipDown 0.6s ease-in-out;
    }
    @-webkit-keyframes frontFlipDown {
        to {
            -webkit-transform: rotateX(0.5turn);
            transform: rotateX(0.5turn);
        }
    }
    @keyframes frontFlipDown {
        to {
            -webkit-transform: rotateX(0.5turn);
            transform: rotateX(0.5turn);
        }
    }
    @-webkit-keyframes backFlipDown {
        to {
            -webkit-transform: rotateX(0);
            transform: rotateX(0);
        }
    }
    @keyframes backFlipDown {
        to {
            -webkit-transform: rotateX(0);
            transform: rotateX(0);
        }
    }
</style>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: Vue编写炫酷的时钟插件

本文链接: https://lsjlt.com/news/166360.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Vue编写炫酷的时钟插件
    本文实例为大家分享了Vue编写时钟插件的具体代码,供大家参考,具体内容如下 效果图 代码奉上: <template>     <div class="clock"...
    99+
    2024-04-02
  • 炫酷的IntelliJ IDEA插件有哪些
    本篇内容介绍了“炫酷的IntelliJ IDEA插件有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1...
    99+
    2024-04-02
  • 怎么用HTML5的canvas实现一个炫酷时钟效果
    小编给大家分享一下怎么用HTML5的canvas实现一个炫酷时钟效果,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!对于H5来说,canvas可以说是它最有特色的一...
    99+
    2023-06-09
  • 怎么编写Vue插件
    本篇内容主要讲解“怎么编写Vue插件”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么编写Vue插件”吧!什么是插件在Vue框架中,如果需要给Vue增加一些我们需要的功能,Vue给我留了一个插件...
    99+
    2023-06-25
  • 如何使用vue写一个翻页的时间插件
    本文小编为大家详细介绍“如何使用vue写一个翻页的时间插件”,内容详细,步骤清晰,细节处理妥当,希望这篇“如何使用vue写一个翻页的时间插件”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。代码<templat...
    99+
    2023-07-05
  • 一篇文章告诉你如何编写Vue插件
    目录什么是插件编写插件使用插件总结什么是插件 在Vue框架中,如果需要给Vue增加一些我们需要的功能,Vue给我留了一个插件的方式,我们可以编写自己的插件,然后在Vue中去注册插件,...
    99+
    2024-04-02
  • Node.js插件的正确编写方式
    Node.js在利用JavaScript编写后端方面效果拔群,值得我们多加尝试。不过如果大家需要一些无法直接使用的功能甚至是根本无从实现的模块使用,那么能否从C/C++库当中引入此类成果呢?答案是肯定的,大...
    99+
    2022-06-04
    插件 正确 方式
  • WordPress插件和主题编写时cookie应如何设置
    编写WordPress插件和主题的时候,经常需要用到cookie,比如存取用户状态等,我之前编写的插件Ludou Simple Vote就用cookie来记录用户投票时间,以实现简单的防止重复投票功能。 但是如果你在Wo...
    99+
    2022-06-12
    cookie设置 setcookie
  • 利用Rust编写一个简单的字符串时钟
    目录1、简介2、用到的知识点2.1 取utc时间2.2 图片变换为像素图案2.3 字符方式显示当前时间2.4 时间刷新1、简介 用rust写的一个简单的练手的demo,一个字符串时钟...
    99+
    2022-12-26
    Rust字符串时钟 Rust 时钟
  • 如何编写vue的组件库
    随着Vue框架的不断发展和普及,越来越多的开发者开始使用Vue编写Web应用程序。在Vue开发中,组件是Vue的核心概念之一,可以让开发者更加灵活和高效地组织代码和交互逻辑。因此,编写Vue的组件库就成为了许多开发者关注和探索的领域。本文将...
    99+
    2023-05-25
  • 写jQuery插件时的注意点有哪些
    这篇文章主要为大家展示了“写jQuery插件时的注意点有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“写jQuery插件时的注意点有哪些”这篇文章吧。支持U...
    99+
    2024-04-02
  • 关于vue3编写挂载DOM的插件问题
    vue3 跟 vue2 相比,多了一个 app 的概念,vue3 项目的创建也变成了 // main.js import { createApp } from 'vue' imp...
    99+
    2024-04-02
  • vue组件的编写风格有哪些
    这篇文章主要介绍了vue组件的编写风格有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇vue组件的编写风格有哪些文章都会有所收获,下面我们一起来看看吧。随着vue3的逐渐稳定,以及周边生态的完善,现在vue...
    99+
    2023-07-06
  • vue时间组件DatePicker组件的手写示例
    概述 在日常工作中,比不可少会用到时间组件,我们的第一反应就是直接到组件库去找一下现成的来用下,毕竟,时间组件看起来还是很复杂的,对于没接触过的人来说,要自己去写一个这样的组件出来,...
    99+
    2024-04-02
  • 为Android Studio编写自定义Gradle插件的教程
    Google已经建议Android开发全部转向Android Studio开发,Android Studio 是使用gradle编译、打包的,那么问题来了,gradle可是有一...
    99+
    2022-06-06
    Android Studio studio gradle 教程 Android
  • jQuery如何编写设置和获取颜色的插件
    这篇文章给大家分享的是有关jQuery如何编写设置和获取颜色的插件的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。首先我将插件的名字命名为jquery.color.js。该插件用来...
    99+
    2024-04-02
  • jQuery图片与相册的插件代码如何编写
    jQuery图片与相册的插件代码如何编写,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。jQuery想必大部分前端er都知道甚至很熟悉了,网上有...
    99+
    2024-04-02
  • Vue3编写自定义指令插件的示例代码
    编写自定义插件 // src/plugins/directive.ts import type { App } from 'vue' // 插件选项的类型 interface Opt...
    99+
    2024-04-02
  • 如何解决使用vue-aplayer插件时出现的问题
    这篇文章主要介绍如何解决使用vue-aplayer插件时出现的问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!具体如下:安装$ npm install ...
    99+
    2024-04-02
  • vue利用Moment插件格式化时间的实例代码
    moment是一款多语言支持的日期处理类库, 在vue中如何使用呢?首先附上官网地址:http://momentjs.cn/, 毕竟查找api才是学习正途! 使用npm命令安装mom...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作