上次偶尔看到不知是哪一个大佬写的一个后台页面中, 感觉她那个金额一直刷刷的往上涨, 当然是带有动画那种. 感觉挺炫酷的, 正好在过几天我也需要以一个后台的页面, 具体内容虽然还没出来, 但是我可以先做一个这个简单的dome.
第一步当然是需求分析辣, 一个数字不断滚动增加的数据, 然后呢还待小数点, 每隔三位再带一个逗号
数字滚动的话, 我首先就想到通过限定高度div内嵌超高ul, 然后每一个li就是一个数字, 算好相对的高度, 每次给ul一个translateY的动画,至于动画? 那就直接上css3的transition:all; Oj8k, 大致情况就是这样子咯, 接下来当时是激动人心的代码实现环节咯.
既然是一个功能, 那我们当然要封装一个函数去控制咯, 既然现在是面向对象的时代, 那还是直接封装一个对象吧.首先呢, new一个对象,再给一些配置参数辣. 我看看我们需要一些什么东西可以配置呢? 需要给一个容器元素, 字体的大小, 然后数字的长度, 动画的时间. ok就这几个配置了
1 | function scrollNum(option){ |
初始化嘛, 当然要把我们的内容给渲染到屏幕上去了, 我们先来渲染len位数字出来呗
1 | let template = '' |
渲染好以后, 我们就可以开始指挥她滚动到指定位置了
1 | // 给定一个位置, 然后让他滚动到多少 |
上面实现的是滚动一位数的, 我们一版都是几十位的数据, 怎么能滚动一位一位嘛, 下面就来实现滚动到指定数据
1 | // 给定一个位置, 然后让他滚动到多少 |
大概的效果都已经实现了, 但是我们还需要定义一下css样式嘛
1 | let style = document.createElement("style"); |
最好我们再把scrollTo抛出, 丢给外部
1 | function scrollNum(option){ |
大概也就这样子咯, 如果想要一直随机加数据的话, 直接弄一个setInterval就行
1 | let t = scrollNum("scroll"), d = 10086 |