美文网首页
实现页面“公告”上下轮播

实现页面“公告”上下轮播

作者: 一个写前端的姑娘 | 来源:发表于2021-05-21 14:21 被阅读0次

Vue实现实现页面公告轮播

1. 首先写一个div块,同时样式也附加上。如图所示。
image.png
<!-- html -->
<div class="marquee_box">
    <!-- 小喇叭图标 -->
    <img class="public" src="public.png" alt=""> 
    <!-- 公告循环展示 -->
    <ul class="marquee_list">
        <li v-for="(item, index) in marqueeList" :key="index">{{item}}</li>
    </ul>
</div>

<!-- css-->
.marquee_box {
  position: relative;
  overflow: hidden;
  width: 312px;
  height: 27px;
  background: rgba(255,254,245, 0.6);
  border-radius: 27px;
  // 小喇叭样式
  .public {
    position: absolute;
    left: 13px;
    top: 7px;
    width: 17px;
    height: 14px;
  }
  // 
  .marquee_list {
    position: absolute;
    top: 0;
    left: 38px;
    li {
      height: 30px;
      line-height: 27px;
      font-size: 13px;
      color: #ee4f00;
      width: 275px;
      white-space: nowrap;
      overflow: hidden;
      text-overflow: ellipsis;
    }
  }
}
2. 首先公告上下轮播实现的机制:

先实现一个动画,让公告向上滚动30px。这个动画首先想到的是transition(过渡)属性来实现。第一个动画实现之后,要停留一点时间,再进行下一次的重复动画。

// transition(过渡)实现的动画效果
.marquee_top {
  transition: all 0.5s;
  margin-top: -30px
}

那如何实现这个动画呢,只要在ul元素上加上这个class类就实现了

<!-- html -->
<div class="marquee_box">
    <!-- 小喇叭图标 -->
    <img class="public" src="public.png" alt=""> 
    <!-- 公告循环展示 -->
    <ul class="marquee_list marquee_top">
        <li v-for="(item, index) in marqueeList" :key="index">{{item}}</li>
    </ul>
</div>

但是如果直接加上这个class类后,ul元素只是想上滑动了30px,第二个li元素展示在公告栏中,第一行向上隐藏了。如果想要有连续的滚动的效果,只能使用setInterval来实现了

<!-- html -->
<div class="marquee_box">
    <!-- 小喇叭图标 -->
    <img class="public" src="public.png" alt=""> 
    <!-- 公告循环展示 -->
    <ul class="marquee_list" :class="{marquee_top:animate}">
        <li v-for="(item, index) in marqueeList" :key="index">{{item}}</li>
    </ul>
</div>

// js
setInterval(() => {
   // 开始执行动画,500ms后关闭动画,停留(5s - 500ms)的时间,再执行下一次的动画(animate这个变量控制动画执行还是不执行)
  this.animate = true;
  setTimeout(()=>{
      // 动画开始执行同时,需要处理公告数组中的数据,将执行完动画的元素将其从数组的第一位放到最后一位,实现公告的循环轮播。
      this.marqueeList.push(this.marqueeList[0]);
      this.marqueeList.shift();
      this.animate = false;
   }, 500)
}, 5000); // 停留一段时间后来执行这个动画
后续:实现图片的轮播也是同样的道理,看完这篇文章可以试着自己封装一个图片轮播的效果。

相关文章

  • 实现页面“公告”上下轮播

    Vue实现实现页面公告轮播 1. 首先写一个div块,同时样式也附加上。如图所示。 2. 首先公告上下轮播实现的机...

  • Banner轮播

    京东快报轮播公告的实现 ViewPagerIndicator

  • 任务27 - jquery实战 - 轮播

    代码 实现如下轮播效果 展示、代码 实现上述轮播效果,在一个页面有三个轮播 展示、代码 实现如下无限循环滚动轮播效...

  • 关于轮播的思路(使用clone 移动宽度)

    实现如下轮播效果(渐变轮播)task27-1 一个页面有3个轮播task-27-2 实现如下无限循环滚动轮播效果t...

  • css实现上下轮播

    利用css实现上下轮播,但是会出现卡顿,可以优化 css html

  • 技术练习的demo集

    demo1 实现优酷轮播图效果 页面效果展示 功能:自动轮播,hover停止轮播,点击left/right上一页/...

  • 项目分解

    首页### 轮播图实现 最新收益滚动 公告列表 产品3张不规则大图。 产品小图列表 单张广告图 发现### 轮播图...

  • 08.详情页面

    详情页面简单实现 1.编写Detail页面 详情轮播 写一个动态轮播组件Swiper的用法,还是去查之前的官网。这...

  • JQ实现左右轮播效果

    这篇文章主要是实现图片左右轮播效果,功能:进入页面自动播放图片,鼠标悬浮,暂停图片轮播,鼠标离开,继续图片轮播,点...

  • 杂货铺

    photoSwipe——对多图页面可实现点击放大,并且可以左右滑动轮播(参考淘宝商品详情页面)

网友评论

      本文标题:实现页面“公告”上下轮播

      本文链接:https://www.haomeiwen.com/subject/zfjwjltx.html