小程序可用CSS3 animation 实现的跑马灯

Posted SegmentFault

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了小程序可用CSS3 animation 实现的跑马灯相关的知识,希望对你有一定的参考价值。

最近有个项目里面用到跑马灯,网上搜了下,虽然有人贴出来过一些实现,但是实际上都存在一些个问题。

哎,再造个轮子吧。

先放个效果:

p.s. 如果能访问jsfiddle最好:https://jsfiddle.net/650spwen/

主要原理

微信小程序现在实际上还是用的 webview,里面搞动画效率最高的莫过于使用CSS3 的 animation了。

跑马灯无非就是一直滚动,这很容易想到使用无限循环的 animation.

而一直往左滚动的效果,通过 css 有很多种方式,比如通过改变 left, margin-left, tranform:translateX()都可以实现。但是 leftmargin-left 一般会导致布局的重新计算。使用 transform:translateX()性能会更好一些。

主要实现代码

首先,视图模板 wxml 中:

 
   
   
 
  1. <view>css3 + animation跑马灯</view>

  2. <view class="marquee">

  3.    <view class="content">

  4.        <text>{{text}}</text> <text style="display: inline-block; width: 5em;"></text>

  5.        <text>{{text}}</text> <text style="display: inline-block; width: 5em;"></text>

  6.        <text>{{text}}</text> <text style="display: inline-block; width: 5em;"></text>

  7.    </view>

  8. </view>

这里为了连续无限滚动,特意复制了 2 份跑马灯的内容( .content)。

然后,样式 wxss 中:

 
   
   
 
  1. @keyframes kf-marque-animation{ 0% { transform: translateX(0); } 100% { transform: translateX(-33.3%); } }

  2. .marquee{

  3.    width: 100%;

  4.    height: 44px;

  5.    line-height: 44px;

  6.    background: #fff;

  7.    border: none;

  8.    display: block;

  9.    margin: 0 auto;

  10.    overflow: hidden;

  11.    white-space: nowrap;

  12.    text-overflow: clip;

  13.    position: relative;

  14.    font-size: 28rpx;

  15. }

  16. .marquee .content{

  17.    display: inline-block;

  18.    position: relative;

  19.    padding-right: 0px;

  20.    animation: kf-marque-animation 11.3s linear infinite;

  21.    white-space: nowrap;

  22. }

最后,js 里面随便给 page.data.text 赋值一段文本即可。具体 js 略。

如果要调整滚动速度,可以设置 .content 的元素的动画时间( animation-duration 样式)。由于微信小程序中无法获取到对应元素的宽度,这个时间只能写死或者根据 text的长度估算出一个值。

完整的示例在jsfiddle上有个html版本的:https://jsfiddle.net/650spwen/


以上是关于小程序可用CSS3 animation 实现的跑马灯的主要内容,如果未能解决你的问题,请参考以下文章

CSS3——3D旋转图(跑马灯效果图)

css3 animation实现逐帧动画

《animationtransition之微信小程序》

《animationtransition之微信小程序》

《animationtransition之微信小程序》

小技巧CSS3文字颜色动态渐变