功能: 实现文字字幕 公告内容 自动横向滚动
思路:运用滚动条和计时器
效果:

示例:
如果是动态数据,就要复制一遍 template 中 data1 的数据放 data2 这里,当数据发生改变时 data2 的数据也能实时更新。如果是静态数字可以在方法里面复制或innerHTML赋值
content中的长度大于 header 才会有滚动效果
<template>
<div class="hello">
<div class="header">
<div class="content">
<div class="data1">
<span>世界很美</span>
<span>你也很美</span>
<span>天气很好</span>
<span>你也很好</span>
</div>
<div class="data2">
<span>世界很美</span>
<span>你也很美</span>
<span>天气很好</span>
<span>你也很好</span>
</div>
</div>
</div>
</div>
</template>
<script>
export default {
name: 'HelloWorld',
props: {
msg: String
},
data(){
return{
timer:null,//定时器
}
},
methods:{
scrollMove(){
var header = document.querySelector('.header')//获取元素
var data1 = document.querySelector('.data1')
// var data2 = document.querySelector('.data2')//如果data1里面是静态数据可以直接如此操作。
// data2.innerHTML = data1.innerHTML;
this.timer = setInterval(() => {
header.scrollLeft++;
if(header.scrollLeft >= data1.clientWidth){
header.scrollLeft = 0;
}
}, 50);
}
},
mounted(){
this.scrollMove()//挂载
},
destroyed(){
clearInterval(this.timer)//销毁定时器
},
}
</script>
<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped lang="scss">
h3 {
margin: 40px 0 0;
}
ul {
list-style-type: none;
padding: 0;
}
li {
display: inline-block;
margin: 0 10px;
}
a {
color: #42b983;
}
</style>
<style lang="less" scoped>
.header{
margin: auto;
width: 200px;
height: 40px;
line-height: 40px;
overflow: hidden;
background-color: cornflowerblue;
}
.content{
width: 1200px;
overflow: hidden;
}
.data1,.data2{
// display: inline-block; 行内块或浮动让两个div在同一行上
padding-right: 25px;
float: left;
}
</style>
浙公网安备 33010602011771号