vue实现消息的无缝上下滚动效果(只展示一条消息时)

vue部分

export default {
data() {
  return {
      animate:false,
      items:[
       

 { name: '1' },

        { name: '2' },

        { name: '3' },

        { name: '4' },

        { name: '5' },

        { name: '6' },

        { name: '7' },

        { name: '8' },

        { name: '9' },

        { name: '10', age: '18', sex: '男' },

        { name: '11' },

        { name: '12' },

        { name: '13' },

        { name: '14' },

        { name: '15' },

        { name: '17' },

        { name: '18' },

        { name: '19' },

        { name: '20' },

        { name: '21' },


      ]
  }
},
created(){
    setInterval(this.scroll,1000)
},
methods: {
    scroll(){
       this.animate=true;    // 因为在消息向上滚动的时候需要添加css3过渡动画,所以这里需要设置true
       setTimeout(()=>{      //  这里直接使用了es6的箭头函数,省去了处理this指向偏移问题,代码也比之前简化了很多
               this.items.push(this.items[0]);  // 将数组的第一个元素添加到数组的
               this.items.shift();               //删除数组的第一个元素
               this.animate=false;  // margin-top 为0 的时候取消过渡动画,实现无缝滚动
       },500)
    }
}

css部分

#box{
    width: 300px;
    height: 32px;
    overflow: hidden;
    padding-left: 30px;
    border: 1px solid black;
}
.anim{
    transition: all 0.5s;
    margin-top: -30px;
}
#con1 li{
    list-style: none;
    line-height: 30px;
    height: 30px;
}

html部分

<div id="box">
            <ul id="con1" ref="con1" :class="{anim:animate==true}">
                <li v-for='item in items'>{{item.name}}</li>
            </ul>
        </div>
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Vue实现图片无缝循环滚动并且可以手动滑动滚动,可以使用第三方的滑动组件库如 `vue-awesome-swiper`。以下是一个简单的实现示例: 首先,安装 `vue-awesome-swiper`: ```bash npm install vue-awesome-swiper --save ``` 然后,在Vue组件中引入并使用滑动组件: ```vue <template> <div class="swiper-container"> <div class="swiper-wrapper"> <div class="swiper-slide" v-for="img in images" :key="img.id"> <img :src="img.src" :alt="img.alt"> </div> </div> <div class="swiper-scrollbar"></div> </div> </template> <script> import Vue from 'vue' import VueAwesomeSwiper from 'vue-awesome-swiper' Vue.use(VueAwesomeSwiper) export default { data() { return { images: [ { id: 1, src: 'image1.jpg', alt: 'Image 1' }, { id: 2, src: 'image2.jpg', alt: 'Image 2' }, { id: 3, src: 'image3.jpg', alt: 'Image 3' }, { id: 4, src: 'image4.jpg', alt: 'Image 4' } ] } }, mounted() { new Swiper('.swiper-container', { loop: true, scrollbar: { el: '.swiper-scrollbar', hide: true } }) } } </script> <style> .swiper-container { width: 100%; height: 300px; } .swiper-slide img { width: 100%; height: 100%; object-fit: cover; } </style> ``` 在这个示例中,我们首先引入 `vue-awesome-swiper` 并将其注册到Vue中。然后,我们在模板中创建一个 `.swiper-container` 容器,并在其中嵌套一个 `.swiper-wrapper` 容器和一个 `.swiper-scrollbar` 容器。我们使用 `v-for` 指令循环遍历图片数组,并将每张图片作为一个 `.swiper-slide` 容器的子元素。 在 `mounted` 钩子函数中,我们使用 `new Swiper()` 函数创建一个新的滑动对象,并传入相关配置项。在这个示例中,我们设置了 `loop` 为 `true`,以实现图片的无缝循环滚动。我们还使用 `scrollbar` 属性添加了一个滚动条,并将其隐藏。 最后,我们在样式中设置了容器的宽度和高度,并将图片的 `object-fit` 属性设置为 `cover`,以便在容器中显示整张图片。 需要注意的是,以上示例中的滑动效果是自动播放的,如果需要手动滑动,则需要添加一些额外的配置项。例如,可以使用 `touchStartPreventDefault: false` 来禁止在触摸屏上阻止默认事件,以便支持手动滑动。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值