前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >时间轴的实现

时间轴的实现

作者头像
程序媛夏天
发布2025-01-15 08:30:11
发布2025-01-15 08:30:11
13000
代码可运行
举报
运行总次数:0
代码可运行

需求背景:现在有一个时间比如13:00到17:00的时间段图,然后有个13:10到13:45的时间,如何定位画出时间段图。 要在前端用Vue和JavaScript实现一个可视化的时间段图,并在其中标示特定的时间段,你可以使用HTML的元素来绘制时间线,或者使用更高级的库如D3.js或Chart.js来简化图表的创建。这里我将展示如何使用简单的CSS和HTML来创建一个静态的时间段图,以及如何使用Vue动态更新这个图形。

使用CSS和HTML创建时间段图 首先,我们可以创建一个表示整个时间段(13:00到17:00)的条形,并且在这个条形中添加另一个表示子时间段(13:10到13:45)的小条形。 html

代码语言:javascript
代码运行次数:0
复制
<div id="app">
    <div class="timeline-container">
        <div class="timeline" :style="{ width: timelineWidth }">
            <div class="sub-timeline" :style="{ left: subTimelineStart, width: subTimelineWidth }"></div>
        </div>
        <div class="labels">
            <span>13:00</span>
            <span>17:00</span>
        </div>
    </div>
</div>

css

代码语言:javascript
代码运行次数:0
复制
.timeline-container {
    position: relative;
    width: 100%;
}

.timeline {
    background-color: lightgray;
    height: 20px;
    position: relative;
}

.sub-timeline {
    background-color: blue;
    height: 100%;
    position: absolute;
    top: 0;
}

.labels {
    display: flex;
    justify-content: space-between;
    margin-top: 5px;
}

javascript

代码语言:javascript
代码运行次数:0
复制
new Vue({
    el: '#app',
    data() {
        return {
            startTime: '13:00',
            endTime: '17:00',
            subStartTime: '13:10',
            subEndTime: '13:45'
        };
    },
    computed: {
        // 计算时间比例并转换为百分比宽度
        timelineWidth() {
            const start = this.parseTime(this.startTime);
            const end = this.parseTime(this.endTime);
            const duration = (end - start) / 60; // 将分钟转换为小时
            return `${duration * 100}%`; // 假设每小时占用100%的宽度
        },
        subTimelineStart() {
            const start = this.parseTime(this.startTime);
            const subStart = this.parseTime(this.subStartTime);
            const duration = (subStart - start) / 60;
            return `${duration * 100}%`;
        },
        subTimelineWidth() {
            const subStart = this.parseTime(this.subStartTime);
            const subEnd = this.parseTime(this.subEndTime);
            const duration = (subEnd - subStart) / 60;
            return `${duration * 100}%`;
        }
    },
    methods: {
        parseTime(timeString) {
            const [hours, minutes] = timeString.split(':').map(Number);
            return hours * 60 + minutes; // 转换为分钟数
        }
    }
});

这段代码会创建一个表示从13:00到17:00的时间段的灰色条形,并在其中添加一个蓝色条形来表示13:10到13:45的时间段。计算属性 timelineWidth, subTimelineStart 和 subTimelineWidth 用来根据时间差计算出正确的宽度和位置。

请记得调整样式以匹配你的应用设计需求。如果你想要更加复杂的交互功能,例如拖动或缩放,你可能需要引入额外的JavaScript库或编写更复杂的逻辑。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-01-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档