[前端]css3 transition实现顶部滚动公告栏/通知

最近需要做一个顶部的滚动栏。内容向上滚动。


像这样的

大概的原理,是让整个列表的margin-top从0再不断的减小,直到第一条通知完全离开可视范围,将第一条通知插入到列表的最后。同时把margin-top又变回0。


示意图

最开始想到的方式是设置一个定时器不断减小margin-top,但又想了下有没有使用css的方案呢。

于是现在的方案是利用transition实现滚动的过渡动画。
先来说下transition,设置 transition: margin-top 2s,然后当margin-top的值改变时就会添加一个过渡动画。比如margin-top最开始是0,设置为-20px的时候,不是直接一下变到-20px的状态,而是有一个上移的过度。

所以我们最开始设置margin-top:0,然后设置一个setInterval,间隔一段时间后(这段时间不滚动),再设置margin-top:-20px(每行的高度)。接着将第一条通知插入到列表的最后。同时把margin-top又变回0。

但这个时候就出现一个问题,从-20px到0也有会有过渡动画,所以要在设置margin-top:-20px的时候同时移除transition属性(可以移除包含transition这个的class)

为了减少页面重绘重排,可以把margin-top换成transform:translateY(-20px)。其他的都一样。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • W3C标准中对css3的transition这是样描述的:“css的transition允许css的属性值在一定的...
    青春前行阅读 5,276评论 0 5
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 27,965评论 1 45
  • CSS要点记录 CSS 指层叠样式表 (Cascading Style Sheets) 多种样式时的优先级问题 数...
    Tony__Hu阅读 4,892评论 0 0
  • 小学生也许对他们的行为没有什么后顾之忧,他们很少才会关注他人的感想,以及可能会给人造成的,无法磨灭的记忆。 当然,...
    如歌行板阅读 1,339评论 0 2
  • 01 不带手机上床 带着手机上床,往往会将正常的睡觉时间推迟。另外,坐在床上玩手机对眼睛和颈椎的伤害都很大。 ...
    晴云秋月AL阅读 2,286评论 0 2