vue实现通知消息上下滚动效果

本文介绍如何使用Vue.js实现通知消息的上下滚动效果。通过HTML、CSS及JavaScript代码,详细展示了消息列表滚动的具体实现过程,包括过渡动画效果及无缝滚动。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

vue实现通知消息上下滚动效果

1,html

<!--  通知消息滚动模板    -->
      <div class="box">
        <ul class="con1" ref="con1" :class="{anim:animate==true}">
          <li v-for='item in messageList'><img style="height: 0.267rem" :src='require("assets/img/self/hd.png")' >{{item.infoContent.substring(0,20)+'...'}}<span style="color: #999999;font-size: 0.053rem;float: right;margin-right: 0.18rem">{{item.createTime | dateYMD }}</span></li>
        </ul>
      </div>

2,CSS

.box{
    width: 98%;
    height: 64px;
    overflow: hidden;
    margin-left: 1.5%;
    margin-top: 0.533rem;
    background: #f9f9f9;
    border-radius: 0.213rem;
  }
  .anim{
    transition: all 0.5s; 
    margin-top: -30px;
  }
  .con1 li{
    list-style: none;
    line-height: 30px;
    height: 30px;
    font-size: 0.053rem;
  }

3,JS

created() {
    // 定时触发滚动函数
    setInterval(this.messagescroll,2000)
  },
methods:{
//通知消息滚动函数
    messagescroll(){
      this.animate=true;    // 开启过渡动画
      setTimeout(()=>{
        this.messageList.push(this.messageList[0]);  // 将数组的第一个元素追加到数组最后面
        this.messageList.shift();               //然后删除数组的第一个元素
        this.animate=false;  // margin-top 为0 的时候取消过渡动画,实现无缝滚动
      },3500)
    },
    }
 data() {
    return {
      animate:false, //控制过渡动画是否开启
      messageList:[],//通知消息列表
     }
   }

4,实现效果

在这里插入图片描述

Vue.js中创建新闻上下轮播滚动效果,通常可以使用`v-for`指令配合`li`或`div`等元素,并结合过渡动画(`transition`或`v-enter/v-enter-active/v-exit/v-exit-active`)来实现。下面是一个简单的例子: 1. 首先,在HTML模板部分,你可以定义一个包含新闻列表的`ul`或`carousel-container`: ```html <template> <div class="carousel-container"> <transition-group tag="ul" name="slide-transition"> <li v-for="(item, index) in newsList" :key="index"> <img :src="item.image" alt="news image"> <p>{{ item.title }}</p> </li> </transition-group> </div> </template> ``` 2. 然后在CSS中添加样式,比如使用CSS动画(如Animate.css)或者自定义过渡效果: ```css .slide-transition { transition: transform 0.5s ease; } .slide-transition li { position: absolute; left: 0%; width: 100%; } .slide-transition li.active { transform: translateX(0); } .slide-transition li:not(.active) { transform: translateX(-100%); } ``` 3.JavaScript部分(通常是`methods`或`data`里),你可以编写切换滑块的函数,例如每隔一段时间自动滚动: ```javascript export default { data() { return { newsList: [ // ... 新闻数据 ] }; }, methods: { nextSlide() { const carousel = this.$refs.carouselContainer.querySelector('transition-group'); if (carousel.childElementCount > 1) { const lastChild = carousel.lastChild; lastChild.classList.remove('active'); carousel.prepend(lastChild); } }, // 如果你想实现向上滚动,只需将`prepend`改为`append` }, mounted() { setInterval(this.nextSlide, 3000); // 每隔3秒切换一次 } }; ``` 记得在需要的地方绑定`ref`属性以便在Vue实例中引用DOM元素。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值