效果图:

需求:

1 开始时间、结束时间可配置
2 时差固定8小时
3 根据当前时间初始化位置
4 每隔5s刷新位置
5 超过结束时间停止刷新

HTML:

  <div class="time-axis">
<div class="startTime">{{start_time}}</div>
<div class="endTime">{{end_time}}</div>
<!-- 小时刻度 -->
<div class="hourLine">
<div class="line" v-for="index of 8" :key="index" :style="{left: `${90*(index-1)}px`}">
<div class="secondLine">
<div class="second" v-for="index of 4" :key="index" :style="{left: `${18*(index-1)}px`}"></div>
</div>
</div>
</div>
<!-- 指针 -->
<div class="point" :style="{left: `${current_position}px`}" v-if="pointFlag">
<div class="currentTime">{{current_time}}</div>
<img src="@/assets/img/gateway/timeLine_point.png" alt="">
</div>
</div>

JS:

props: {
start_time: {
type: String,
default: '',
},
end_time: {
type: String,
default: '',
},
currentTimeFromP: {
type: String,
default: '',
},
},
data() {
return {
current_time: '10:00:00',
allSecond: 0,
st_second: '',
et_second: '',
current_second: '',
current_position: '',
timer: null,
pointFlag: true,
}
},
beforeDestroy() {
if(this.timer) {
clearInterval(this.timer);
}
},
mounted() {
this.st_second = this.hmsToS(this.start_time)
this.et_second = this.hmsToS(this.end_time)
// 8小时总秒
this.allSecond = this.hmsToS(this.end_time) - this.hmsToS(this.start_time)
// 计算当前位置
this.current_position = this.bibliography() * 722
// 判断当前时间是否超过结束时间或者小于开始时间
if(this.current_second>=this.et_second || this.current_second<this.st_second ) {
this.$message.warning('当前时间不在服务范围内')
this.pointFlag = false
} else {
this.timer = setInterval(() => {
if(this.current_second>=this.et_second || this.current_second<this.st_second ) {
clearInterval(this.timer)
this.$message.warning('当前时间不在服务范围内')
this.pointFlag = false
}
this.current_position = this.bibliography() * 722
}, 5000)
}
},
methods: {
// 比例 = (当前时间 - 开始时间) / 总秒数
bibliography() {
// 当前时间秒数
this.current_second = this.hmsToS(this.nowDataToHMS())
let key = (this.current_second - this.st_second) / this.allSecond
return key
},
// 时分秒转化秒
hmsToS(e) {
var time = e;
var len= time.split(':')
if(len.length==3){
var hour = time.split(':')[0];
var min = time.split(':')[1];
var sec = time.split(':')[2];
return Number(hour*3600) + Number(min*60) + Number(sec);
}
if(len.length==2){
var min = time.split(':')[0];
var sec = time.split(':')[1];
return Number(min*60) + Number(sec);
}
if(len.length==1){
var sec = time.split(':')[0];
return Number(sec);
}
},
// 当前时间时分秒
nowDataToHMS() {
let myDate = new Date()
let str = myDate.toTimeString()
this.current_time = str.substring(0,8)
return this.current_time
},
},

CSS:

.time-axis {
position: relative;
height: 26px;
border-left: 2px solid rgba(255,255,255,.6);
border-right: 2px solid rgba(255,255,255,.6);
width: 720px;
background: rgba(0,0,0,.2);
color: #fff;
.startTime {
position: absolute;
top: -20px;
left: -25px;
color: #fff;
}
.endTime {
position: absolute;
top: -20px;
right: -25px;
color: #fff;
}
.hourLine {
height: 70%;
width: 100%;
position: absolute;
bottom: 0;
display: flex;
.line {
position: absolute;
width: 90px;
height: 100%;
border-right: 1px solid rgba(255,255,255,.6);
&:nth-child(8) {
border-right: none;
}
.secondLine {
height: 50%;
width: 100%;
position: absolute;
bottom: 0;
display: flex;
.second{
position: absolute;
width: 18px;
height: 100%;
border-right: 1px solid rgba(255,255,255,.3);
}
}
}
}
.point {
position: absolute;
left: -8px;
.currentTime {
position: absolute;
bottom: -10px;
left: -18px;
color: #00D4FF;
}
img {
width: 16px;
height: 46px;
}
}
}

***如有转载请注明出处!!!

vue8小时带刻度的时间轴,根据当前时间实时定位的更多相关文章

  1. 使用canvas编写时间轴插件

    使用canvas编写时间轴插件 背景 项目中有一个视频广场的功能,需要一个时间轴类似视频播放中进度条功能一样显示录像情况,并且可以点击.拖动.放大缩小展示时间轴,获取到时间轴的某个时间.原来的时间轴是 ...

  2. extjs 4 chart 时间轴格式的处理

    var dayStore = Ext.create('Ext.data.JsonStore', { fields: [{ name: 'name', type: 'date', dateFormat: ...

  3. 请教DotNetBar控件中的CalendarView控件如何拖动当前的时间轴

    本人想拖动那个当前的时间轴或者让时间轴变动,因为那个时间轴默认的是当前时间.(就是那个黄色的线)

  4. Asp.net+jquery+ajaxpro异步仿Facebook纵向时间轴效果

    Asp.net+jquery+ajaxpro异步仿Facebook纵向时间轴效果 在一个项目中,用到了时间轴展示产品的开发进度,为了更好用户体验,想到了Facebook的timeline效果, 搜了一 ...

  5. SharePoint 中时间轴 Timeline的实现

    客户需要在OA中实现每日动态功能,能够记录每一位员工的每天的工作动态,我很快想到了时间轴,因为时间轴能很直观的现实员工每一刻的动态.就像Facebook的Timeline效果(点击查看). 尝试着搜索 ...

  6. Android 时间轴的实现

    时间轴 时间轴,顾名思义就是将发生的事件按照时间顺序罗列起来,给用户带来一种更加直观的体验.京东和淘宝的物流顺序就是一个时间轴(如图),想必大家都不陌生. 时间轴的初探 初次见到这种UI,感觉整个布局 ...

  7. jQuery时间轴

    常见的时间轴导航 横向时间轴

  8. 推荐5款实用的jQuery时间轴插件

    1.使用CSS3和jQuery制作的水平时间轴 这是一个可以在PC和移动端表现非常棒的水平时间轴,它由上部水平滑块和下部时间点对应的内容区块,点击时间轴上的时间点,下部内容会滑动到对应的内容区块.使用 ...

  9. JFreeChart时间轴固定24小时每天刷新

    Timeseries时间轴,设置x轴固定长度24小时 xAxis.setFixedAutoRange(3600000 * 2D), 再画出当天24点这一点 Date day = new Date(); ...

  10. 基于jquery带时间轴的图片轮播切换代码

    基于jquery图片标题随小圆点放大切换.这是是一款带时间轴的图片轮播切换代码.效果图如下: 在线预览   源码下载 实现的代码. html代码: <div id="decoroll2 ...

随机推荐

  1. .NET Core Configuration 配置项知识点一网打尽!

    控制台项目中,演示示例 1.自定义 Dictionary Config  内存字典模式 dotnet add package Microsoft.Extensions.Configuration IC ...

  2. Linux间进程通信--消息队列

    本系列文章主要是学习记录Linux下进程间通信的方式. 常用的进程间通信方式:管道.FIFO.消息队列.信号量以及共享存储. 参考文档:<UNIX环境高级编程(第三版)> 参考视频:Lin ...

  3. 算法金 | 一文读懂K均值(K-Means)聚类算法

    ​大侠幸会,在下全网同名[算法金] 0 基础转 AI 上岸,多个算法赛 Top [日更万日,让更多人享受智能乐趣] 1. 引言 数据分析中聚类算法的作用 在数据分析中,聚类算法用于发现数据集中的固有分 ...

  4. lxl学长讲课笔记

    lxl 学长讲课笔记 常数种可能性的状态 通过预先处理多种状态的信息,从而快速的转换状态. 经典操作:flip. 分析信息的思路 利用线段树 利用线段树的时候,如何合并两个分支区间的信息,我们需要有如 ...

  5. 你知道键盘是如何工作的吗?(xv6键盘驱动程序)

    键盘驱动程序 公众号:Rand_cs 键盘如何工作的前文曾经说过,当时是以 Linux 0.11 为基础讲的但不系统,本文以 xv6 的键盘驱动程序为例来系统地讲述键盘是如何工作的.关于驱动程序前文磁 ...

  6. 限速上传文件到腾讯对象存储cos的脚本

    官网:https://cloud.tencent.com/document/product/436/12269 安装包,这里用的python2.7 # pip install -U cos-pytho ...

  7. java8 Optional使用 stream filter多级过滤

    java8 Optional使用 stream filter多级过滤 package com.example.core.mydemo.java8; public class MyModel { pri ...

  8. doris wget 地址

    wget https://apache-doris-releases.oss-accelerate.aliyuncs.com/apache-doris-2.0.0-alpha1-bin-x86_64. ...

  9. Postman 的 Basic Auth 如何通过 Feign 实现

    Postman 的 Basic Auth: 分析 根据以上图片分析: Postman 的 Authorization 实际为: header 中添加 Authorization: ******* ** ...

  10. C++判断字符串是否相等

    话不多说,上代码 bool str_same(char *p1, char *p2) { if (strcmp(p1, p2)) return 0; else for (int i = 0; i &l ...