Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
273 views
in Technique[技术] by (71.8m points)

vue如何做新闻列表上下滚动的效果

图片描述

循环播放的

这是data部分

data() {
    return {
      prizeList: [
        { name: 0 },
        { name: 1 },
        { name: 2 },
        { name: 3 },
        { name: 4 }
      ]
    }
  }

这是我目前的代码,只能循环切换,没有动画效果

setInterval(async () => {
    let first = this.prizeList.splice(0, 1)
    this.prizeList.push(...first)
}

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

可以换一种思路,使用transition实现

<div class="scroll-wrap">
    <ul class="scroll-content" :style="{ top }">
        <li v-for="item in prizeList">{{item.name}}</li >  
    </ul>
</div>
export default {
  data () {
    return {
      prizeList: [
        { name: 0 },
        { name: 1 },
        { name: 2 },
        { name: 3 },
        { name: 4 }
      ],
      activeIndex: 0
    }
  },

  computed: {
    top() {
      return - this.activeIndex * 50 + 'px';
    }
  },

  mounted() {
    setInterval(_ => {
      if(this.activeIndex < this.prizeList.length) {
        this.activeIndex += 1;
      } else {
        this.activeIndex = 0;
      }
    }, 1000);
  }
};
.scroll-wrap{
  width: 200px;
  height: 50px;
  border: 1px solid blue;
  overflow: hidden;
}

.scroll-content{
  position: relative;
  transition: top 0.5s;

  li{
    line-height: 50px;
    text-align: center;
  }
}

效果

clipboard.png


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...