Timeline 时间线
用法
时间线组件,用timeline
和timeline-item
两个组件,通过传递timestamp
来结合一起使用。
基础用法
通过在timeline-item
上循环遍历输出timestamp
和自定义内容,达到组合成时间线的目的。
- 成立
- 高速发展
- 上市
- 至今
- 至今
- 上市
- 高速发展
- 成立
正序
反序
<!-- 正序 -->
<mooc-timeline>
<mooc-timeline-item
v-for="(item,index) in timeline"
:key="index"
:timestamp="item.timestamp">
{{item.content}}
</mooc-timeline-item>
</mooc-timeline>
<!-- 反序 -->
<mooc-timeline :reverse="true">
<mooc-timeline-item
v-for="(item,index) in timeline"
:key="index"
:timestamp="item.timestamp">
{{item.content}}
</mooc-timeline-item>
</mooc-timeline>
export default {
data () {
return {
timeline: []
}
},
created () {
this.timeline = [
{ timestamp: '2015-09-01', content: '成立' },
{ timestamp: '2016-09-01', content: '高速发展' },
{ timestamp: '2018-09-01', content: '上市' },
{ timestamp: '2019-09-13', content: '至今' }
]
}
}
不同的颜色
通过传递color
,来实现不同颜色的timeline
节点。
- 成立
- 高速发展
- 上市
- 至今
- 成立
- 高速发展
- 上市
- 至今
默认颜色
自定义颜色
<!-- 默认颜色 -->
<mooc-timeline>
<mooc-timeline-item
v-for="(item,index) in timeline"
:timestamp="item.timestamp">
{{item.content}}
</mooc-timeline-item>
</mooc-timeline>
<!-- 自定义颜色 -->
<mooc-timeline>
<mooc-timeline-item
v-for="(item,index) in timeline"
:timestamp="item.timestamp"
:color="item.color">
{{item.content}}
</mooc-timeline-item>
</mooc-timeline>
export default {
data () {
return {
timeline: []
}
},
created () {
this.timeline = [
{ timestamp: '2015-09-01', color: '#58a', content: '成立' },
{ timestamp: '2016-09-01', color: '#f60', content: '高速发展' },
{ timestamp: '2018-09-01', color: '#f01414', content: '上市' },
{ timestamp: '2019-09-13', color: '#00b43c', content: '至今' }
]
}
}
不同的类型
通过传递type
,来实现不同类型的timeline
节点,其中type
为基础类型primary
, success
, warning
, danger
和info
其中之一,它和color
属性一样,只影响节点的颜色。
- 成立
- 高速发展
- 上市
- 至今
- 成立
- 高速发展
- 上市
- 至今
默认
自定义类型
<!-- 默认 -->
<mooc-timeline>
<mooc-timeline-item
v-for="(item,index) in timeline"
:timestamp="item.timestamp">
{{item.content}}
</mooc-timeline-item>
</mooc-timeline>
<!-- 自定义类型 -->
<mooc-timeline>
<mooc-timeline-item
v-for="(item,index) in timeline"
:timestamp="item.timestamp"
:type="item.type">
{{item.content}}
</mooc-timeline-item>
</mooc-timeline>
export default {
data () {
return {
timeline: []
}
},
created () {
this.timeline = [
{ timestamp: '2015-09-01', type: 'primary', content: '成立' },
{ timestamp: '2016-09-01', type: 'warning', content: '高速发展' },
{ timestamp: '2018-09-01', type: 'danger', content: '上市' },
{ timestamp: '2019-09-13', type: 'success', content: '至今' }
]
}
}
不同的大小
通过传递size
,来实现不同大小的timeline
节点,其中size
为必须为small
, normal
, medium
和`large其中之一,它只影响节点的大小。
- 成立
- 高速发展
- 上市
- 至今
- 成立
- 高速发展
- 上市
- 至今
默认12px
自定义大小
<!-- 默认 -->
<mooc-timeline>
<mooc-timeline-item
v-for="(item,index) in timeline"
:timestamp="item.timestamp">
{{item.content}}
</mooc-timeline-item>
</mooc-timeline>
<!-- 自定义类型 -->
<mooc-timeline>
<mooc-timeline-item
v-for="(item,index) in timeline"
:timestamp="item.timestamp"
:type="item.type">
{{item.content}}
</mooc-timeline-item>
</mooc-timeline>
export default {
data () {
return {
timeline: []
}
},
created () {
this.timeline = [
{ timestamp: '2015-09-01', color: '#58a', size: 'small', content: '成立' },
{ timestamp: '2016-09-01', color: '#f60', size: 'normal', content: '高速发展' },
{ timestamp: '2018-09-01', color: '#f01414', size: 'medium', content: '上市' },
{ timestamp: '2019-09-13', color: '#00b43c', size: 'large', content: '至今' }
]
}
}
不同的位置
通过传递placement
,其中值必须为top
或者bottom
其中之一,来控制时间戳显示的位置。
- 成立
- 高速发展
- 上市
- 至今
- 成立
- 高速发展
- 上市
- 至今
默认底部
自定义顶部
<!-- 默认底部 -->
<mooc-timeline>
<mooc-timeline-item
v-for="(item,index) in timeline"
:timestamp="item.timestamp">
{{item.content}}
</mooc-timeline-item>
</mooc-timeline>
<!-- 自定义顶部 -->
<mooc-timeline>
<mooc-timeline-item
v-for="(item,index) in timeline"
:timestamp="item.timestamp"
:placement="item.placement"
:color="item.color">
{{item.content}}
</mooc-timeline-item>
</mooc-timeline>
export default {
data () {
return {
timeline: []
}
},
created () {
this.timeline = [
{ timestamp: '2015-09-01', color: '#58a', size: 'small', content: '成立', placement: 'top' },
{ timestamp: '2016-09-01', color: '#f60', size: 'normal', content: '高速发展', placement: 'top' },
{ timestamp: '2018-09-01', color: '#f01414', size: 'medium', content: '上市', placement: 'top' },
{ timestamp: '2019-09-13', color: '#00b43c', size: 'large', content: '至今', placement: 'top' }
]
}
}
是否显示时间戳
通过传递hideTimestamp
,来控制是否显示时间戳。
- 成立
- 高速发展
- 上市
- 至今
- 成立
- 高速发展
- 上市
- 至今
默认
不显示时间戳
<!-- 默认 -->
<mooc-timeline>
<mooc-timeline-item
v-for="(item,index) in timeline"
:timestamp="item.timestamp">
{{item.content}}
</mooc-timeline-item>
</mooc-timeline>
<!-- 不显示时间戳 -->
<mooc-timeline>
<mooc-timeline-item
v-for="(item,index) in timeline"
:hide-timestamp="true"
:timestamp="item.timestamp">
{{item.content}}
</mooc-timeline-item>
</mooc-timeline>
export default {
data () {
return {
timeline: []
}
},
created () {
this.timeline = [
{ timestamp: '2015-09-01', content: '成立' },
{ timestamp: '2016-09-01', content: '高速发展' },
{ timestamp: '2018-09-01', content: '上市' },
{ timestamp: '2019-09-13', content: '至今' }
]
}
}
自定义节点
除了通过以上的属性来控制timeline
以外,我们还可以通过插槽的形式,定义自定义节点。
- 1成立
- 2高速发展
- 3上市
- 4至今
<!-- 自定义dot -->
<mooc-timeline>
<mooc-timeline-item
v-for="(item,index) in timeline"
:timestamp="item.timestamp">
<div class="my-dot" slot="dot">{{index+1}}</div>
{{item.content}}
</mooc-timeline-item>
</mooc-timeline>
.my-dot
z-index: 10;
position: relative;
color: #fff;
line-height: 20px
&::after
content: '';
position: absolute;
left: -5px;
top: 0;
width: 20px;
height: 20px;
background-color: #f60;
transform: rotate(45deg);
自定义内容
可以通过默认的内容插槽,来实现自定义的content
。
- 成立
- 高速发展
- 上市
- 至今
<mooc-timeline>
<mooc-timeline-item
v-for="(item,index) in timeline"
placement="top"
:timestamp="item.timestamp">
<div class="my-content">{{item.content}}</div>
</mooc-timeline-item>
</mooc-timeline>
.my-content
width: 500px;
padding: 20px;
background-color: #fff;
box-shadow: 0 2px 12px rgba(7,17,27,0.1);
属性
timeline 属性
属性名称 | 类型 | 默认值 | 说明 |
---|---|---|---|
reverse | Boolean | false | 是否反转时间轴 |
timeline-item 属性
属性名称 | 类型 | 默认值 | 说明 |
---|---|---|---|
timestamp | String | - | 时间戳 |
hideTimestamp | Boolean | false | 是否隐藏时间轴 |
placement | Sring | bottom | 时间轴的位置,必须为top 或bottom 之一 |
size | Sring | small | 节点的大小,必须为small ,normal ,medium 和large 其中之一 |
type | Sring | - | 节点的类型,必须为primary ,success ,warning ,danger 和info 其中之一 |
color | Sring | - | 节点的颜色,如同时传递了type ,则type 会被color 覆盖,无效。 |