可自定义设置以下属性:
- 滚动文字数组(sliderData),必传
- 文字滚动时间间隔(interval),默认3000ms
- 展示文字宽度(width),默认800px,可传100vw
- 展示文字高度(height),默认60px
效果如图:
①创建VerticalTextSlider.vue组件:
<template>
<div class="m-slider" :style="`height: ${height}px;`">
<transition-group name="slide">
<a
v-for="(item, index) in sliderData"
class="u-slider"
:style="`width: ${width}`"
:key="item.title"
v-show="index===activeIndex"
:title="item.title"
:href="item.link"
@mouseenter="onStop"
@mouseleave="onStart">
{
{ item.title }}</a>
</transition-group>
</div>
</template>
<script>
export default {
name: 'VerticalTextSlider',
props: {
sliderData: { // 滚动文字数组
type: Array,
required: true,
default: () => {
return []
}
},
interval: { // 文字滚动时间间隔
type: Number,
default: 3000
},
width: { // 展示文字宽度
type: String,
default: '800px' // 100vw
},
height: { // 展示文字高度
type: Number,
default: 60
}
},
data () {
return {
activeIndex: 0
}
},
computed: {
len () {
return this.sliderData.length
}
},
mounted () {
this.onStart() // 启动公告轮播
},
methods: {
onStop () {
if (this.len > 1) {
clearTimeout(this.timer)
}
},
onStart () {
if (this.len > 1) {
this.startMove(this.len)
}
},
startMove () {
this.timer = setTimeout(() => {
if (this.activeIndex === this.len - 1) {
this.activeIndex = 0
} else {
this.activeIndex++
}
this.startMove()
}, this.interval)
}
}
}
</script>
<style lang="less" scoped>
@themeColor: #1890FF;
.slide-enter-active, .slide-leave-active {
transition: all 1.2s ease-in-out;
}
.slide-enter {
transform: translateY(40px) scale(0.5);
opacity: 0;
}
.slide-leave-to {
transform: translateY(-40px) scale(0.5);
opacity: 0;
}
.m-slider {
position: relative;
width: 100%;
background: #F6FFED;
overflow: hidden;
.u-slider {
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
margin: auto;
display: inline-block;
text-align: center;
height: 24px;
line-height: 24px;
font-size: 18px;
color: #333;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
cursor: pointer;
&:hover {
color: #1890FF;
}
}
}
</style>
②在要使用的页面引入:
<VerticalTextSlider :sliderData="sliderData" :interval="3000" width="800px" :height="60" />
import VerticalTextSlider from 'components/VerticalTextSlider'
components: {
VerticalTextSlider
}
sliderData: [
{
title: '美国作家杰罗姆·大卫·塞林格创作的唯一一部长篇小说',
link: 'javascript:;'
},
{
title: '首次出版于1951年',
link: 'javascript:;'
},
{
title: '塞林格将故事的起止局限于16岁的中学生霍尔顿·考尔菲德从离开学校到纽约游荡的三天时间内',
link: 'javascript:;'
},
{
title: '并借鉴了意识流天马行空的写作方法,充分探索了一个十几岁少年的内心世界',
link: 'javascript:;'
},
{
title: '愤怒与焦虑是此书的两大主题,主人公的经历和思想在青少年中引起强烈共鸣',
link: 'javascript:;'
}
]