效果图:

需求:

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. Vue3.0极速入门(二) - 目录和文件说明

    目录结构 以下文件均为npm create helloworld自动生成的文件目录结构 目录截图 目录说明 目录/文件 说明 node_modules npm 加载的项目依赖模块 src 这里是我们要 ...

  2. IOS Video Tool Box后台解码失败

    ---恢复内容开始--- 1.VideoToolBox硬件解码H264流的过程中,如果App从前台按Home键进入后台,会立马产生一个-12903的错误  如果这个时候重置解码器,继续解码,会遇到 - ...

  3. html2canvas + jspdf导出pdf,文字重叠,样式不显示或者文字不显示

    先在html引入cdn <script src="https://html2canvas.hertzen.com/dist/html2canvas.js"></s ...

  4. CF1827

    CF1827 A. Counting Orders 简单计数. 两个都排序,双指针维护一下 a[i] 在 b[p] 的位置(a[i] <= b[p]). 那么方案数 \(\times (p - ...

  5. C#.NET 国密SM4加密解密 CBC ECB 2种模式

    注意点: 1.加密时,明文转 byte[] 时,不要用 Encoding.Default,一定要指定编码,如:UTF-8. 解密时,解出的 byte[] 转 string 同样要指定相同的编码. 2. ...

  6. freemarker模板替换生成word

    工具类 public static void createWord(Map<String,Object> dataMap, String templateName, String file ...

  7. RequestBodyAdvice和注解方式进行统一参数处理demo

    RequestBodyAdvice和注解方式进行统一参数处理demo @Target({ ElementType.METHOD, ElementType.TYPE }) @Retention(Rete ...

  8. IDEA生成类和方法注释模板详细说明 绝对好用

    吐槽 今天心血来潮,将使用了很久的IDEA旗舰版卸载了,想换社区版用一段时间,毕竟社区版开源免费.精简不卡顿,如果够用的话以后就省去了破解的烦恼,而且可以紧跟官网使用最新版 旧的IDEA配置忘记保存了 ...

  9. 交通规划四阶段法:基于 Python 的交通分布预测算法复现 - 附完整代码链接

    目录 交通规划四阶段法:基于 Python 的交通分布预测算法复现 - 附完整代码链接 我只是想使用这些代码 下载代码文件 代码的使用方法 合作 部分代码内容的展示 交通规划四阶段法:基于 Pytho ...

  10. K8s高可用集群二进制部署-V1.20

    一.前置知识点 1.1 生产环境部署K8s集群的两种方式 kubeadm Kubeadm是一个K8s部署工具,提供kubeadm init和kubeadm join,用于快速部署Kubernetes集 ...