css实现超简单的跑马灯效果

1,322 阅读2分钟

我正在参加「码上掘金挑战赛」详情请看:码上掘金挑战赛来了!

这是一个用css实现的一个超简单跑马灯。至于为什么写这个,还是因为我在写一个防qq的新项目,想把以前写过的防网易云音乐项目加到这个项目来。网易云项目用的是vue3,跑马灯是用vue3-marquee这个包,所以自己就特意写了一下

项目效果

项目实现

html

  • 只需要一个根容器,加上一个包裹文字的span
<div class="marquee-container">
    <span>跑马灯效果</span>
</div>

css

  • 给根容器一个相对定位,宽度和高度根据自己需求进行调整
  • 边框可给可不给,我这边给是因为效果看起来更明显
  • 给子容器一个绝对定位,让他脱离文档流,位置再根据父容器进行调整
.marquee-container{
  position: relative;
  width: 200px;
  height: 30px;
  border: 1px solid red;
}
span{
  position: absolute;
  top: 4px; // (父元素的高度-文字高度) / 2
  right: 0;
  animation: marquee 3s linear infinite;
}
@keyframes marquee{
    /* 开始状态 */
  0% {
   
  }
   /* 结束状态 */
  100% {
   transform: translateX(-200px);
  }
}

css3动画的实现

这个实现,只需要知道css3的新特性动画的基本知识即可, 动画的基本使用分为两步

1. 先定义动画

用@keyframes关键字定义动画

  • 0%是动画的开始,100%是动画的完成
  • 在@keyframes中规定某项css样式,就能创建由当前样式逐渐改为新样式的动画效果
  • 动画是使元素从一种样式逐渐变化为另一种样式的效果,你可以改变任意多的样式任意多的次数
  • 百分比可以用来规定变化发生的时间,活用关键字"from"和"to",等同于0%和100%

2. 再使用动画

  • 谁需要动画就写在哪
  • 下面是动画的简写书写顺序和动画的属性
  • 注意 '动画名称''持续时间' 是必须写的

animation: 动画名称 持续时间 运动曲线 何时开始 播放次数 是否反方向 动画起始或者结束的状态;

image.png