vue无缝滚动

vue无缝滚动

项目环境vue-cli ,请自行配置好相应的,环境及路由,这里主要介绍实现的方法

第一步在模板中 使用v-for方法循环出消息列表

1

2

3

4

5

6

7

8

<template>

 

<div id="box">

  <ul id="con1" ref="con1" :class="{anim:animate==true}">

    <li v-for='item in items'>{{item.name}}</li>

  </ul>

</div>

</template>

第二步在<script>标签中放置消息数组和具体的method 方法。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

<script>

 

 export default {

data() {

 return {

   animate:false,

   items:[  //消息列表对应的数组

     {name:"马云"},

     {name:"雷军"},

     {name:"王勤"}

   ]

 }

},

created(){

  setInterval(this.scroll,1000) // 在钩子函数中调用我在method 里面写的scroll()方法,注意此处不要忘记加this,我在这个位置掉了好几次坑,都是因为忘记写this。

},

methods: {

  scroll(){

    let con1 = this.$refs.con1;

    con1.style.marginTop='-30px';

    this.animate=!this.animate;

    var that = this; // 在异步函数中会出现this的偏移问题,此处一定要先保存好this的指向

    setTimeout(function(){

        that.items.push(that.items[0]);

        that.items.shift();

        con1.style.marginTop='0px';

        that.animate=!that.animate;  // 这个地方如果不把animate 取反会出现消息回滚的现象,此时把ul 元素的过渡属性取消掉就可以完美实现无缝滚动的效果了

    },500)

  }

}

}

</script>

 

<style>

 

*{

  margin: 0 ;

  padding: 0;

}

#box{

  width: 300px;

  height: 32px;

  line-height: 30px;

  overflow: hidden;

  padding-left: 30px;

  border: 1px solid black;

  transition: all 0.5s;

}

.anim{

  transition: all 0.5s;

}

#con1 li{

  list-style: none;

  line-height: 30px;

  height: 30px;

}

</style>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值