我的前端故事----轮盘转起来(+﹏+)~

转眼间,马上又到了中秋了,忽然想到了有到了做活动的日子了~每逢佳节必活动的传统一直是我们前端的职责所在,去年我介绍了游戏机,大富翁,那今年的活动就来个轮盘开奖吧~其实这个东西在 pc 端上已经烂大街了,无数的 demo,插件可以帮助我们实现这个功能,所以我也就随大流的去找了个知名的 jQuery 插件去实现这个功能,可惜我做的是移动端的开发。。。平时基本都是原生 javaScript 做开发,顶多上一个 zepto,为了这个功能上一个 jQuery 总觉得不是那么地道,不过现在的jquery压缩下来只有38K,想了想还是尝试尝试,结果发现卡的要死。。。轮盘在 iOS 设备上转起来还能看,到了一些安卓上就简直不能看了,为此被运营的吐槽了不少。。。所以干脆决定自己搞一个算了,我就不信一个轮盘能这么卡!

说干就干,因为平时是采用之前说的nuts做脚手架的,所以js上面可以使用ES6来做开发,因此我的这个插件也同样采用ES6语法来写的,详细的使用方法请参考这里。我的这个插件支持两个方法,rotate() 方法用来对元素进行操作,而 getRotateAngle() 可以取到元素最后停下来的角度。

简单的来说,使用起来还是很直观的,在初始化的时候设置起始角度,转动角度和转动时间,就可以等着回调函数按时执行了~原理大家应该都懂,那么它又是怎么能在移动端上保证高性能呢?其实就是用到了之前我介绍到的requestAnimationFrame 来做这个动画~

首先,我们先初始化变量,我先用ele来缓存传入的元素节点,接下来再拿到浏览器的样式 styles,旋转动画我还是使用的 transform 属性来做,为了兼容性,我需要知道当前浏览器支持的是什么前缀的 transform,为了便于存储,我先将所以的 transform 用字符串的形式存储下来,然后在 filter 方法中遍历出浏览器支持的具体属性,并且保存在 supportedCSS 变量中。

这两句十分的关键!因为我们采用3D变换,所以需要这两个属性来加速我们的动画,其实原理也是很简单的,通过这两个属性,我们可以让我们的动画调用设备的GPU来进行渲染,这会大大的提高渲染效果。

这个是基于 requestAnimationFrame 的转动函数,它不停的递归执行动画,直到满足条件后退出,在这个函数中我们需要传入参数来控制它的变换曲线,关于曲线变换的知识点,之前圆里的大神有很详细的介绍,感兴趣的可以去搜索一下~在这个函数中我并没有直接去操作dom节点,而是通过 _animate() 去进行真正的旋转的。

最后我们返回两个函数,我们可以在这两个函数这里对传入的参数进行一些预处理或者校验等等,我在这里其实除了拼装对象外,并没有做过多的处理,感兴趣的同学可以自己去改一改试试~

到处为止~这个简单的轮盘组件就做完啦~很简单吧~思路还是比较清晰的,关键的亮点在于使用请求动画帧来做旋转逻辑,另外就是通过style的属性让动画启用GPU进行渲染,这两点在移动端上可以大大的提升我们组件的性能,好了~今天就到这里吧~什么时候我想到了更好玩的活动再记录下来吧~( ̄︶ ̄)

源代码请见GitHub:https://github.com/F-happy/mobile-wheel-of-fortune

时间: 2024-12-21 06:56:53

我的前端故事----轮盘转起来(+﹏+)~的相关文章

我的前端故事----欢乐大富翁( ̄︶ ̄)↗ (摇骰子+棋盘)

十一马上就要到了~~做为前端的小伙伴~活动页面必然是少不了了~那怎么吸引眼球呢?当然是玩游戏啦~这次就带来一个我为十一做的小游戏,作为活动页中的衬托~~ 那我们要做个什么样的游戏呢?先上图~ 由于实际的效果图因为是公司的活动,我就不贴出来了~这里用这个棋盘来大致说明一下效果咯~下面是游戏规则: 1,当用户看到棋盘的时候,棋子出现在上一次停留下来的位置: 2,当用户点击开始后,中间的骰子开始摇动,最后停止在服务器返回的数字前: 3,当骰子结束动画后,棋子还是移动,一步一步的向前移动,遇到四个顶点的

我的前端故事----优美的编辑器GitHub Atom

很多前端的同学都在用sublime text,我之前也在使用,但是后来接触到了Atom,就被它的高颜值深深的吸引了~~不愧是GitHub的工程师哦~审美就是高  Atom 作为一个跨平台的编辑软件,安装和使用都是十分的方便,刚刚接触的同学也很容易在上面找到sublime text的影子,这非常方便像我这样的人搬过来,那么最基础我就不介绍了,今天这篇就给刚刚接触Atom的同学带来一些常用的插件,你会发现,原来Atom可以变得更美丽~~ 插件篇 效果可在插件首页中查看 atom-beautify:这

我的前端故事----来聊聊react-native应用的健康监控

监控什么 今天我们来聊聊如何监控你的应用程序,这里的监控说的不是让我们去监控用户,而是监控应用的健康状态,什么是健康状态呢?对于后端的同学来说,在微服务的架构下,每个子服务是否正常工作.返回的结果是否满足预期,这些就算是健康状态,再举个例子,你的台式机,对于操作系统来说,每个硬件是否能正常的工作.工作的稳定性,这些都是需要关注的健康状态. 既然我们关心健康状态,那么我们该如何衡量一个"设备"的健康状态呢?对于上面的例子,CPU运行的温度.硬盘读取的速度.子服务执行的效率,这些都可以作为

上周热点回顾(5.16-5.22)

热点随笔: · [无私分享:从入门到精通ASP.NET MVC]从0开始,一起搭框架.做项目(5.2) 登录功能的实现,接口注入.log4net的使用(果冻布丁喜之郎)· [无私分享:从入门到精通ASP.NET MVC]从0开始,一起搭框架.做项目(5.3) 登录功能的实现,丰富数据表.建立关联(果冻布丁喜之郎)· 微软.NET Core RC2正式发布,横跨所有平台(张善友)· [无私分享:从入门到精通ASP.NET MVC]从0开始,一起搭框架.做项目(5.4) 登录功能的实现,创建与登录用

自学前端开发,现在手握大厂offer,我的故事还在继续

简要背景 我是一个非科班出身的程序员,而且是连续跨专业者,用一句话总结就是:16 届本科学完物流,保送研究生转交通,自学前端开发的休学创业者. 17 年休学创业,正式开始学习前端,离开创业公司后,我又回炉深造,期间一直没有放弃前端开发的自主学习,在 19 年秋招(20 年毕业)大战中也收获了一些 offer. 列举一部分 SP(Special Offer): 美团(专注吃喝玩乐的 O2O 互联网公司) 小米(2019 年世界 500 强中最年轻的公司) 顺丰(物流行业中高端市场扛把子) 云从(人

我与前端的故事

今夜不想写前端技术,只想聊聊与前端为伴的日子. 真正接触前端是在16年年底,当时正值研一寒假.一直一来是坚定毕业要从事技术相关的岗位的,却并不清楚具体要从事哪项技术,身边接触比较多的要数java研发和测试岗位了.不过我对这两者貌似一开始就并不是太感冒,谈不上具体的什么理由.身边的同学朋友有推荐我了解一下前端,或许我会感兴趣.之后通过网上了解,逐步想去知道她到底是怎么样,直到寒假要结束的时候,确定下来,我要学前端!之后果断的在网上买了两本书加上网上教程开启自学之路. 敲出第一个p元素实现页面中的"

爬虫521错误(又是一次和可爱的前端vs的故事)

起因: 今天突然想重构一下代理池,并且想扩充一下代理,所以就想着爬点代理IP,然后就有了下面的故事 一上来先进行了一顿操作: def get_xxdaili(url): headers = { 'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.119 Safari/537.36', "Host": 'www.66ip.cn', &q

前端工程师如何月薪过4万

食指小心翼翼的按了一下Enter,提交了深夜前的最后一行代码,轻轻的将烟灰不是很熟悉的抖了几下,看了一眼窗外只有几盏孤独的路灯下的北京夜色突然间想起了什么,那是多年前键盘上的梦想.从事这个行业8年了,走到今天想把一路的经验和辛酸呈现给你们.也想静下心来,好好写点什么对得起这个标题. 1.我是谁? 可能你认识我,也可能你觉得对于敢写这样标题的我多少有些鄙夷.不过都希望你能耐心看完它.我跟你们一样,经历中国传统教育从小学中学高中大学,一直就像一个不倒翁一样一直被摆来摆去,小学的时候妈妈就会说你看人家

一个通信本科生,大步迈向前端了!!!决定了!!!

先来个介绍吧,本人是本科通信在校大学生一枚.现阶段大二上期.有相情况的可以一起交流啊. 我比较认同一句话:所学为所用. ·······希望各位路过的大大,看看是否认识有问题,我及时自我敲打. 1,专业认识: 学了一些基础课程,越来越觉得这个专业是偏向硬件的,是基于底层,通过算法,结合程序实现一些功能.而要实现一个功能,感觉要花费的成本太高.虽然偏硬件的是越老越吃香,但是我不喜欢这种一条路走死了的.而IT不一样,IT很多东西有相通的,IT转起来要容易一些.我怕我一个浪,把自己整尴尬了. 里面学习的