vue 好看的时间线组件
时间: 2023-08-30 17:03:12 浏览: 150
Vue.js是一种流行的JavaScript框架,它提供了丰富的工具和组件来帮助我们构建交互式和动态的web应用程序。在Vue社区中有许多优秀的时间线组件,下面我将介绍几个我认为非常好看的时间线组件。
1. vue-timeline: 这是一个简单而轻量级的时间线组件,它提供了可自定义的颜色和样式配置。它支持垂直和水平方向的显示,并提供无限滚动功能。该组件的设计简洁美观,易于使用。
2. VueTimeline: 这是一个基于Vue 2的时间线组件,它具有响应式设计,可以在自适应布局中提供优秀的显示效果。它支持自定义样式、事件筛选和分组功能。该组件的界面风格简洁明了,适用于各种项目需求。
3. vuejs-timeline: 这是一个高度可定制的时间线组件,它支持各种布局和样式选项。它可以根据时间进行自动定位,支持动态添加和删除事件。该组件还具有交互性,可以根据用户操作触发特定事件。
以上列举的时间线组件在Vue社区中享有较高的声誉,它们不仅外观漂亮,而且具有丰富的功能和易于集成的特点。它们可以满足各种项目的需求,并为用户提供良好的用户体验。当然,根据项目需求和个人喜好的不同,你还可以进一步搜索并比较其他时间线组件,选择最适合你的项目的组件。
相关问题
vue 横向时间线组件
你可以尝试使用 Vue.js 开发时间线组件,具体实现可以参考以下步骤:
1. 安装必要的依赖:
```bash
npm install vue moment
```
2. 创建一个 TimelineItem.vue 组件,用于展示单个时间线条目的内容:
```vue
<template>
<div class="timeline-item">
<div class="timeline-item__date">{{ formattedDate }}</div>
<div class="timeline-item__content">
<slot></slot>
</div>
</div>
</template>
<script>
import moment from 'moment';
export default {
props: {
date: {
type: String,
required: true
}
},
computed: {
formattedDate() {
return moment(this.date).format('YYYY-MM-DD');
}
}
}
</script>
<style scoped>
.timeline-item {
position: relative;
padding: 1rem;
border-left: 2px solid #e5e5e5;
}
.timeline-item__date {
position: absolute;
top: 0;
left: -7rem;
width: 6rem;
text-align: right;
font-size: 0.8rem;
color: #999;
}
.timeline-item__content {
margin-left: 2rem;
}
</style>
```
3. 创建一个 Timeline.vue 组件,用于容纳多个时间线条目,并实现横向滚动:
```vue
<template>
<div class="timeline">
<div class="timeline__wrapper" ref="wrapper">
<div class="timeline__container" ref="container">
<slot></slot>
</div>
</div>
<div class="timeline__controls">
<button @click="scrollLeft">←</button>
<button @click="scrollRight">→</button>
</div>
</div>
</template>
<script>
export default {
methods: {
scrollLeft() {
this.$refs.wrapper.scrollBy({
left: -200,
behavior: 'smooth'
});
},
scrollRight() {
this.$refs.wrapper.scrollBy({
left: 200,
behavior: 'smooth'
});
}
}
}
</script>
<style scoped>
.timeline {
position: relative;
padding: 1rem 0;
overflow-x: auto;
}
.timeline__wrapper {
display: flex;
flex-direction: row;
align-items: flex-start;
}
.timeline__container {
display: flex;
flex-direction: row;
}
.timeline__controls {
position: absolute;
top: 0;
right: 0;
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
width: 4rem;
height: 100%;
background-color: rgba(255, 255, 255, 0.8);
z-index: 1;
}
.timeline__controls button {
border: none;
background-color: transparent;
font-size: 1.2rem;
cursor: pointer;
outline: none;
}
</style>
```
4. 在需要展示时间线的页面中使用 Timeline 和 TimelineItem 组件:
```vue
<template>
<div>
<h1>My Timeline</h1>
<Timeline>
<TimelineItem date="2021-01-01">
<h3>Event A</h3>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
</TimelineItem>
<TimelineItem date="2021-02-01">
<h3>Event B</h3>
<p>Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
</TimelineItem>
<TimelineItem date="2021-03-01">
<h3>Event C</h3>
<p>Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>
</TimelineItem>
<TimelineItem date="2021-04-01">
<h3>Event D</h3>
<p>Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.</p>
</TimelineItem>
</Timeline>
</div>
</template>
<script>
import Timeline from './Timeline.vue';
import TimelineItem from './TimelineItem.vue';
export default {
components: {
Timeline,
TimelineItem
}
}
</script>
```
通过以上步骤,你就可以创建一个简单的横向时间线组件,用户可以通过左右滚动查看不同时间点的事件。你可以根据自己的需求对组件进行进一步的定制和优化。
vue 写时间组件 横轴是时间 可以拖动
你可以使用 Vue.js 结合第三方库来实现一个可拖动的时间组件,下面是一个基本的实现思路:
1. 安装依赖:你可以使用 Moment.js 库来处理时间和日期,使用 Vue.Draggable 库来实现拖动功能。
```bash
npm install moment vue-draggable --save
```
2. 创建一个时间组件:在 Vue 组件中,你可以使用 `data` 对象来存储时间数组和当前选中的时间。你还需要在 `mounted` 钩子函数中初始化时间数组。
```html
<template>
<div class="time-component">
<div class="time-axis">
<div class="time-point" v-for="time in times" :key="time">{{ time }}</div>
</div>
<draggable v-model="times" class="time-axis" axis="x" :move="onMove">
<div class="time-point" v-for="time in times" :key="time">{{ time }}</div>
</draggable>
</div>
</template>
<script>
import moment from 'moment'
import draggable from 'vuedraggable'
export default {
components: { draggable },
data() {
return {
times: [],
selectedTime: moment(),
}
},
mounted() {
for (let i = 0; i < 24; i++) {
this.times.push(moment().startOf('day').add(i, 'hours').format('HH:mm'))
}
},
methods: {
onMove(event) {
// 可以在这里处理拖动事件
},
},
}
</script>
```
3. 实现拖动功能:在 `methods` 中,你可以处理拖动事件并更新 `times` 数组。你可以使用 `moment` 库来解析和格式化时间。
```javascript
onMove(event) {
const { movement: { x } } = event
const index = event.draggedContext.index
const time = moment(this.times[index], 'HH:mm').add(x, 'minutes').format('HH:mm')
this.$set(this.times, index, time)
},
```
4. 样式设计:使用 CSS 样式来美化时间组件。
```css
.time-component {
position: relative;
width: 100%;
height: 100px;
overflow-x: scroll;
overflow-y: hidden;
}
.time-axis {
display: flex;
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
margin: 0;
padding: 0;
}
.time-point {
flex: 1;
text-align: center;
font-size: 12px;
color: #ccc;
padding: 10px 0;
}
```
这样,你就可以创建一个基本的可拖动时间组件了。
阅读全文