广告
返回顶部
首页 > 资讯 > 精选 >如何使用vue写一个翻页的时间插件
  • 268
分享到

如何使用vue写一个翻页的时间插件

2023-07-05 04:07:55 268人浏览 泡泡鱼
摘要

本文小编为大家详细介绍“如何使用Vue写一个翻页的时间插件”,内容详细,步骤清晰,细节处理妥当,希望这篇“如何使用vue写一个翻页的时间插件”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。代码<templat

本文小编为大家详细介绍“如何使用Vue写一个翻页的时间插件”,内容详细,步骤清晰,细节处理妥当,希望这篇“如何使用vue写一个翻页的时间插件”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

代码

<template>  <div class="dateClock">    <div class="todayClass">      <p class="datep">{{dateToday}}</p>      <span >{{$t(weekDay)}}</span>    </div>    <div class="clock">      <div :class="timeLab==='AM'?'labelTip amstyle':'labelTip pmstyle'">        <span>{{timeLab}}</span>      </div>      <div :class="timeLab==='AM'?'flip amcolor':'flip pmcolor'">        <span class="rightline"></span>        <span class="leftline"></span>        <div class="digital front"             :data-number="nextTimes[0]"></div>        <div class="digital back"             :data-number="nowTimes[0]"></div>      </div>      <div :class="timeLab==='AM'?'flip amcolor':'flip pmcolor'">        <span class="rightline"></span>        <span class="leftline"></span>        <div class="digital front"             :data-number="nextTimes[1]"></div>        <div class="digital back"             :data-number="nowTimes[1]"></div>      </div>      <em :class="timeLab==='AM'?'divider amcolor':'divider pmcolor'"> <i class="iconfont icon-dian"></i></em>      <div :class="timeLab==='AM'?'flip amcolor':'flip pmcolor'">        <span class="rightline"></span>        <span class="leftline"></span>        <div class="digital front"             :data-number="nextTimes[2]"></div>        <div class="digital back"             :data-number="nowTimes[2]"></div>      </div>      <div :class="timeLab==='AM'?'flip amcolor':'flip pmcolor'">        <span class="rightline"></span>        <span class="leftline"></span>        <div class="digital front"             :data-number="nextTimes[3]"></div>        <div class="digital back"             :data-number="nowTimes[3]"></div>      </div>      <em :class="timeLab==='AM'?'divider amcolor':'divider pmcolor'"> <i class="iconfont icon-dian"></i></em>      <div :class="timeLab==='AM'?'flip amcolor':'flip pmcolor'">        <span class="rightline"></span>        <span class="leftline"></span>        <div class="digital front"             :data-number="nextTimes[4]"></div>        <div class="digital back"             :data-number="nowTimes[4]"></div>      </div>      <div :class="timeLab==='AM'?'flip amcolor':'flip pmcolor'">        <span class="rightline"></span>        <span class="leftline"></span>        <div class="digital front"             :data-number="nextTimes[5]"></div>        <div class="digital back"             :data-number="nowTimes[5]"></div>      </div>    </div>  </div></template><script>import {  defineAsyncComponent,  defineComponent,  getCurrentInstance,  onMounted,  Reactive,  toRefs,} from "vue";import DateUtil from "@/utils/dateUtil";export default {  setup() {    const { proxy } = getCurrentInstance();    const data = reactive({      nowTimes: [],      nextTimes: [],      timer: {},      timeLab: 'AM',      dateToday: '',      weekDay: '',      timeKey: 0    });    onMounted(() => {      initDate();      data.timer = setInterval(() => {        updateTime();      }, 1000)    });    const initDate = async () => {      let now = new Date();      data.dateToday = proxy.$moment(now).fORMat('MMM D, YYYY')      let nowWeek = now.getDay()      data.weekDay = DateUtil.returnWeek()[nowWeek]      data.nowTimes = getTimeFromDate(new Date(now.getTime() - 1000));      data.nextTimes = getTimeFromDate(now)    }    const updateTime = () => {      let now = new Date();      data.timeKey = now      let nowTimes = getTimeFromDate(new Date(now.getTime() - 1000));      let nextTimes = getTimeFromDate(now);      data.nowTimes = nowTimes      // console.log('nowTimes', nowTimes)      for (let i = 0; i < 6; i++) {        if (nowTimes[i] !== nextTimes[i]) {          //  setSpin(i, nowTimes[i], nextTimes[i]);          setSpin(i, nowTimes, nextTimes);        }      }    }    // 执行翻页操作    const setSpin = (index, nowTime, nextTime) => {      let nodes = document.querySelectorAll(".flip");      if (nodes.length) {        nodes[index].classList.add('running');        //   data.nowTimes.splice(index, 1, nowTime);        data.nowTimes = nowTime        setTimeout(() => {          nodes[index].classList.remove('running');          //  data.nowTimes.splice(index, 1, nextTime);          //  data.nextTimes.splice(index, 1, nextTime);          data.nowTimes = nextTime          data.nextTimes = nextTime        }, 800)      } else {        clearInterval(data.timer);        data.timer = null      }    }    // 获取时间显示参数    const getTimeFromDate = (date) => {      let numTime = [];      let timeStr = proxy.$moment(date).format("hh:mm:ss A")      // let timeStr = proxy.$moment(date).format("hh:mm A")      data.timeLab = timeStr.split(' ')[1]      let time1 = timeStr.split(' ')[0].split(':').join("")      for (let i = 0; i < time1.length; i++) {        numTime.push(parseInt(time1[i]));      }      return numTime    }    //销毁    return {      ...toRefs(data),      initDate,      updateTime,      setSpin,      getTimeFromDate,    };  }}</script><style lang="sCSS" scoped>.dateClock {   display: flex;   .todayClass {      padding-right: 5px;      .datep {         font-size: 30px;         padding-top: 5px;      }   }   .clock {      display: flex;   }}.clock .divider {   font-size: 40px;   line-height: 47px;   .iconfont {      margin-right: 0;   }}.clock .flip {   position: relative;   width: 44px;   height: 60px;   margin: 2px;   font-size: 40px;   line-height: 60px;   text-align: center;   background: #ffffff;   border: 1px solid #b8b8b8;   border-radius: 4px;   .leftline {      position: absolute;      left: 0;      top: 26px;      width: 0;      height: 8px;      border: 1px solid #b8b8b8;      z-index: 5;   }   .rightline {      position: absolute;      right: 0;      top: 26px;      width: 0;      height: 8px;      border: 1px solid #b8b8b8;      z-index: 5;   }}.amcolor {   color: #ff43a1;}.pmcolor {   color: #1890ff;}.labelTip {   width: 44px;   height: 60px;   margin: 2px;   line-height: 60px;   text-align: center;   border-radius: 4px;   font-size: 16px;   font-weight: bold;   color: #fff;}.amstyle {   background-color: #ff43a1;}.pmstyle {   background-color: #1890ff;}.clock .flip .digital::before,.clock .flip .digital::after {   position: absolute;   content: attr(data-number);   left: 0;   right: 0;   background: #fff;   overflow: hidden;   -WEBkit-perspective: 160px;   perspective: 160px;}.clock .flip .digital::before {   top: 0;   bottom: 50%;   border-bottom: 1px solid #fff;   border-radius: 4px 4px 0 0;}.clock .flip .digital::after {   top: 50%;   bottom: 0;   line-height: 0;   border-radius: 0 0 4px 4px;   background: linear-gradient(180deg, #ffffff, #ffffff 68%, #e2e2e2);}.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 1s ease-in-out;   animation: frontFlipDown 1s ease-in-out;   -webkit-backface-visibility: hidden;   backface-visibility: hidden;}.clock .flip.running .back::after {   -webkit-animation: backFlipDown 1s ease-in-out;   animation: backFlipDown 1s 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>

读到这里,这篇“如何使用vue写一个翻页的时间插件”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网精选频道。

--结束END--

本文标题: 如何使用vue写一个翻页的时间插件

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

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

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何使用vue写一个翻页的时间插件
    本文小编为大家详细介绍“如何使用vue写一个翻页的时间插件”,内容详细,步骤清晰,细节处理妥当,希望这篇“如何使用vue写一个翻页的时间插件”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。代码<templat...
    99+
    2023-07-05
  • 如何使用vue写一个组件
    这篇文章将为大家详细讲解有关如何使用vue写一个组件,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。写一个vue组件我下面写的是以.vue结尾的单文件组件的写法,是基于we...
    99+
    2022-10-19
  • 如何使用Fullpage插件快速开发整屏翻页的页面
    这篇文章将为大家详细讲解有关如何使用Fullpage插件快速开发整屏翻页的页面,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1、一些必要的资源 //jquery <...
    99+
    2022-10-19
  • 如何使用Vue代码实现一个分页组件
    本篇内容主要讲解“如何使用Vue代码实现一个分页组件”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何使用Vue代码实现一个分页组件”吧!组件部分代码:Vue.component('zp...
    99+
    2023-07-04
  • 如何使用vue写一个简书的轮播图
    这篇文章主要介绍了如何使用vue写一个简书的轮播图,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1.先展示最终效果:2.解决思路Vue的理念...
    99+
    2022-10-19
  • 如何解决使用vue-aplayer插件时出现的问题
    这篇文章主要介绍如何解决使用vue-aplayer插件时出现的问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!具体如下:安装$ npm install ...
    99+
    2022-10-19
  • 如何使用Vue实现一个简单的鼠标拖拽滚动效果插件
    这篇文章主要介绍了如何使用Vue实现一个简单的鼠标拖拽滚动效果插件,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 演示事例最近在做...
    99+
    2022-10-19
  • 如何使用ES6的class模仿Vue写一个双向绑定
    小编给大家分享一下如何使用ES6的class模仿Vue写一个双向绑定,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!具体如下:最终...
    99+
    2022-10-19
  • 如何使用go编写一个高效的文件框架?
    Go是一种非常流行的编程语言,其简单性、可靠性和高效性使其成为许多开发人员的首选语言。在本文中,我们将探讨如何使用Go编写一个高效的文件框架,让您可以轻松地读取、写入和处理文件。 一、文件操作 在Go中,我们可以使用os包来进行文件操作。...
    99+
    2023-11-10
    文件 框架 shell
  • 如何使用vbs实现一个扩展时间段的dir命令
    这篇文章主要介绍了如何使用vbs实现一个扩展时间段的dir命令,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。核心代码set Arg=Wscript.Argument...
    99+
    2023-06-08
  • 封装一个vue中也可使用的uniapp的全局弹窗组件(任何页面都可以弹出)
    目录效果图:场景:思路:第一步:第二步:第三部:使用总结效果图: 场景: 当你对接websocket时,或者轮询也好,你需要获取到最新的信息,并且在任何页面弹出一个组件进行后续操作...
    99+
    2023-02-23
    uniapp 全局弹窗 vue弹窗组件 uniapp 全局组件
  • MySQL中使用delete_at(时间戳)作为逻辑删除标记时如何使用MyBatis-Plus逻辑删除组件插入时间戳,以及如何解决自动填充失效的问题
    背景 MySQL中使用delete_at(时间戳)作为逻辑删除标记 在业务中,使用逻辑删除是普遍做法,通常会使用一个名为deleted(0/1)的字段表示删除状态。 但是如果遇到有唯一约束,且可能反复删除和重新插入的表(如用户表,注销用户使...
    99+
    2023-08-30
    mybatis mysql java
  • 如何使用vue监听页面中某个div的滚动事件并判断滚动位置
    这篇文章主要介绍如何使用vue监听页面中某个div的滚动事件并判断滚动位置,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!  在开发中常常会遇到这样一个vue页面,页面分为左右两部分,左边是目录树,...
    99+
    2023-06-29
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作