vue实现抖音时间转盘


Posted in Javascript onSeptember 08, 2019

本文实例为大家分享了vue实现抖音时间转盘的具体代码,供大家参考,具体内容如下

vue实现抖音时间转盘

做了一个抖音时间转盘,还挺简单的,可能我做的很粗糙

用vue做的 才160行代码。

其实很简单 只是大部分人被这个圆给迷惑了

这个圆就是用简单css3就能做 通过rotate来修改计算就能展示出来了。

vue实现抖音时间转盘

然后贴代码。

<template>
 <div class="main">
  <div class="timeBox">
   <div class="yearBox box">{{year}}</div>
   <div class="dayBox box" :style="'transform: rotate('+(360/day.length)*curDay+'deg)'">
    <ul class="container">
     <li
      v-for="(v,i) in day"
      :key="i"
      :style="'transform: rotate('+(-360/day.length) * (i+1) +'deg);transform-origin: -100% 50% 0px;margin-left:150px;margin-top:90px'"
     >{{v}}</li>
    </ul>
   </div>
   <div class="hourBox box" :style="'transform: rotate('+(-360/hour.length)*curHour+'deg)'">
    <ul class="container">
     <li
      v-for="(v,i) in hour"
      :key="i"
      :style="'transform: rotate('+(360/hour.length)*i+'deg);transform-origin: -200% 50% 0px;margin-left:300px;margin-top:190px'"
     >{{v}}</li>
    </ul>
   </div>
   <div class="minutesBox box" :style="'transform: rotate('+(-360/minutes.length)*curMin+'deg)'">
    <ul class="container">
     <li
      v-for="(v,i) in minutes"
      :key="i"
      :style="'transform: rotate('+(360/minutes.length)*i+'deg);transform-origin: -300% 50% 0px;margin-left:450px;margin-top:290px'"
     >{{v}}</li>
    </ul>
   </div>
    <div class="secondBox" :style="'transform: rotate('+(-360/seconds.length)*curSec+'deg)'">
    <ul class="container">
     <li
      v-for="(v,i) in seconds"
      :key="i"
      :style="'transform: rotate('+(360/seconds.length)*i+'deg);transform-origin: -400% 50% 0px;margin-left:600px;margin-top:390px'"
     >{{v}}</li>
    </ul>
   </div>
  </div>
 </div>
</template>
<script>
export default {
 data: function () {
  return {
   data: ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖', '拾', '佰', '仟', '万'],
   hour: [],
   curHour: 0,
   day: [],
   curDay: 0,
   minutes: [],
   curMin: 0,
   seconds: [],
   curSec: 0,
   year: ''
  }
 },
 created () {
  this.dealData()
  this.seconds = JSON.parse(JSON.stringify(this.minutes))
  var sky = ['', '辛', '壬', '癸', '甲', '乙', '丙', '丁', '戊', '己', '庚']
  var land = ['', '酉', '戌', '亥', '子', '丑', '寅', '卯', '辰', '巳', '午', '未', '申']
  var one = new Date().getFullYear() % 10
  var two = new Date().getFullYear() % 12
  this.year = sky[one] + land[two]
  setInterval(() => {
   this.getTime()
  }, 1000)
 },
 methods: {
  dealData () { // 生成数据
   // 星期
   for (let i = 0; i < 7; i++) {
    this.day.push('星期' + this.data[i + 1])
   }
   // 小时
   for (let i = 0; i < 24; i++) {
    if (i < 11) {
     this.hour.push(this.data[i])
    } else {
     this.hour.push((parseInt(i / 10) > 1 ? this.data[parseInt(i / 10)] : '') + '拾' + (parseInt(i % 10) !== 0 ? this.data[i % 10] : ''))
    }
   }
   // 分钟
   for (let i = 0; i < 60; i++) {
    if (i < 11) {
     this.minutes.push(this.data[i])
    } else {
     this.minutes.push((parseInt(i / 10) > 1 ? this.data[parseInt(i / 10)] : '') + '拾' + (parseInt(i % 10) !== 0 ? this.data[i % 10] : ''))
    }
   }
  },
  getTime () { // 获取时间
   var now = new Date()
   this.curSec = now.getSeconds()
   this.curDay = now.getDay()
   this.curMin = now.getMinutes()
   this.curHour = now.getHours()
  }
 }
}
</script>
<style lang="scss" scoped>
.box{
 position: absolute;
 transition: 1s;
}
.main{
 width: 100%;
 height: 100vh;
 overflow: hidden;
 background: #ccc;
}
.yearBox{
 top: 50%;
 left: 50%;
 height: 40px;
 width: 40px;
 margin-top: -20px;
 margin-left: -20px;
 line-height: 40px;
 text-align: center;
 font-size: 18px;
}
.timeBox{
 width: 800px;
 height: 800px;
 margin: 0 auto;
 position: relative;
}
.dayBox {
 width: 200px;
 height: 200px;
 top: 300px;
 left: 300px;
}
.hourBox {
 width: 400px;
 height: 400px;
 top: 200px;
 left: 200px;
}
.minutesBox {
 width: 600px;
 height: 600px;
 top: 100px;
 left: 100px;
}
.secondBox {
 width: 800px;
 height: 800px;
 top: 0;
 left: 0;
 position: absolute;
}
.container {
  overflow:auto;
  li {
   width: 50px;
   height: 20px;
   font-size: 12px;
   position: absolute;
  }
 }
</style>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
静态图片的十一种滤镜效果--不支持Ie7及非IE浏览器。
Mar 06 Javascript
一个报数游戏js版(约瑟夫环问题)
Aug 05 Javascript
js前端面试题及答案整理(一)
Aug 26 Javascript
jquery事件绑定解绑机制源码解析
Sep 19 Javascript
JS实现根据用户输入分钟进行倒计时功能
Nov 14 Javascript
最常见的左侧分类菜单栏jQuery实现代码
Nov 28 Javascript
AngularJS 支付倒计时功能实现思路
Jun 05 Javascript
node+koa实现数据mock接口的方法
Sep 20 Javascript
JavaScript定义函数的三种实现方法
Sep 23 Javascript
vue使用element-ui的el-input监听不了回车事件的解决方法
Jan 12 Javascript
微信小程序左滑删除实现代码实例
Sep 16 Javascript
vue实现虚拟列表功能的代码
Jul 28 Javascript
javascript移动端 电子书 翻页效果实现代码
Sep 07 #Javascript
使用 js 简单的实现 bind、call 、aplly代码实例
Sep 07 #Javascript
vue 使用高德地图vue-amap组件过程解析
Sep 07 #Javascript
vue 的 solt 子组件过滤过程解析
Sep 07 #Javascript
javascript的惯性运动实现代码实例
Sep 07 #Javascript
vue的滚动条插件实现代码
Sep 07 #Javascript
微信小程序页面滚动到指定位置代码实例
Sep 07 #Javascript
You might like
php获取汉字拼音首字母的方法
2015/10/21 PHP
PHP实现文件上传和多文件上传
2015/12/24 PHP
Hutia 的 JS 代码集
2006/10/24 Javascript
Javascript 中的类和闭包
2010/01/08 Javascript
Ext JS 4官方文档之三 -- 类体系概述与实践
2012/12/16 Javascript
jQuery实现带有动画效果的回到顶部和底部代码
2015/11/04 Javascript
实例讲解javascript注册事件处理函数
2016/01/09 Javascript
JavaScript Math 对象常用方法总结
2016/04/28 Javascript
KnockoutJS 3.X API 第四章之表单submit、enable、disable绑定
2016/10/10 Javascript
vue开发心得和技巧分享
2016/10/27 Javascript
浅析BootStrap中Modal(模态框)使用心得
2016/12/24 Javascript
JS中使用textPath实现线条上的文字
2017/12/25 Javascript
node.js中fs文件系统目录操作与文件信息操作
2018/02/24 Javascript
layUI的验证码功能及校验实例
2019/10/25 Javascript
vue element 中的table动态渲染实现(动态表头)
2019/11/21 Javascript
小程序跨页面交互的作用与方法详解
2020/01/07 Javascript
[43:47]DOTA2上海特级锦标赛主赛事日 - 4 败者组第四轮#2 MVP.Phx VS Fnatic第一局
2016/03/05 DOTA
python使用BeautifulSoup分页网页中超链接的方法
2015/04/04 Python
python 垃圾收集机制的实例详解
2017/08/20 Python
一百行python代码将图片转成字符画
2021/02/19 Python
python基于pdfminer库提取pdf文字代码实例
2019/08/15 Python
解决django的template中如果无法引用MEDIA_URL问题
2020/04/07 Python
Python ConfigParser模块的使用示例
2020/10/12 Python
详解python polyscope库的安装和例程
2020/11/13 Python
HTML5 中新的全局属性(整理)
2013/07/31 HTML / CSS
俄罗斯EPL钻石珠宝店:ЭПЛ
2019/10/22 全球购物
应届生学校辅导员求职信
2013/11/07 职场文书
接受捐赠答谢词
2014/01/27 职场文书
班训口号大全
2014/06/18 职场文书
行政专员岗位职责范本
2014/08/26 职场文书
中国文明网向国旗敬礼寄语大全
2014/09/27 职场文书
计划生育证明格式及范本
2014/10/09 职场文书
2016中秋晚会开幕词
2016/03/03 职场文书
python 机器学习的标准化、归一化、正则化、离散化和白化
2021/04/16 Python
六种css3实现的边框过渡效果
2021/04/22 HTML / CSS
Python socket如何解析HTTP请求内容
2022/02/12 Python