如何制作网页小动画?——gif or png
一、场景与动画
为了拉动网站氛围,或者吸引用户浏览焦点,需要使用一些小动画。这种动画不是(gif)单纯的重复,而是需要需要一些控制和交互,比如在动画完成后打开一个对话框。动画有几个基本要素(时间控制,状态切换,事件触发)。
下面举一个天猫的场景:




一只蝴蝶的出现引起了小猫的注意,小猫慢慢的跟随蝴蝶靠近屏幕边缘,最后被莫名其妙的拉到了可视区域的外部,最后弹出天猫工具栏。
我们经常使用gif来制作动画。也确实可以用几个gif拼接来完成一个场景动画。中间的衔接使用js来控制,把上面的三个gif衔接起来就可以创建出一个场景动画。但是后来发现gif并不是最好的方案,下面来分析一下:
二、Gif方案分析
1、图片预加载?
这会提高性能?但是,预加载gif可是不行的,gif一旦被加载,会立刻被执行,即使处于隐藏状态,当进行状态切换时,动画衔接就会出现不匹配,你不知道它正处于何种状态。
2、JS控制?
很遗憾,gif无法通过JS来控制,一旦开动,你就只能等待,唯一的控制发式,就是,估计动画时间,并尽可能的延长下一次循环,这样才能进行平稳的状态切换。
3、透明?
当小猫穿过logo时,需要图片透明。很高兴,gif确实可以实现透明,但是,很遗憾,他是存在毛边的,为了使它看起来舒服一点,聪明的设计师将它的边围了一圈背景色。
三、换一种方式
既然它存在这么多的问题,不如换一种方式?偶然,在一篇博文上看到了google的一种做法,使用png来实现,采用css sprite技术将动画帧合并在一张背景图片上,通过改变图片的位置来切换图像。这个就指哪打哪了。当然png实际上不支持动画(虽然号称支持),但是它支持透明,拥有更丰富的色彩。动画的本质就是多帧图片(包括绘制出来的图像)在时间轴上的切换。这种方式游戏开发中很通用。
这样我们就可以解决掉前面提到的几个问题了。
四、总结
制作小动画如果不要求交互,可以使用gif。如果需要交互且要求高品质的图像质量应使用png。使用canvas有点过了,除非已经复杂到游戏级别,那么是时候了。
如何制作网页小动画?——gif or png的更多相关文章
- 推荐几款制作网页滚动动画的 JavaScript 库
这里集合了几款很棒的制作网页滚动动画的 JavaScript 库和插件.它们中,有的可以帮助你在页面滚动的时候添加动感的元素动画,有的则是实现目前非常流行的全屏页面切换动画.相信借助这些插件,你也可以 ...
- CSS3-实现单选框radio的小动画
在微信上看到一个教程文,觉得制作的小动画还是很有意思的,自己也试验了一下.一开始动画怎么都不执行(我用的HB),因为内置浏览器对css3的不兼容.加上各种浏览器前缀后就好了.但是旋转那个效果,在HB里 ...
- CSS3——制作人物走路的小动画
一个很简单的小动画,但是还挺有意思的,就是找这种图片很麻烦,我这里把我找的一张图片贴上来,这张图片是我在网上找的,又改了背景色和大小. <!DOCTYPE html> <html l ...
- [Mugeda HTML5技术教程之14]案例分析:制作网页游戏
本文档要分析的案例是一个爱消除的网页小游戏,从中可以体会一些Mugeda API的用法和使用Mugeda动画制作网页游戏的方法. (一)游戏规则: 1.开始游戏时,手机出现在最上面一行的任意一格: 2 ...
- 怎么使用dreamweaver制作网页教程 dw建站设计网页
对于网页制作相关专业人士一定对dreamweaver有所认识,下面小编就问大家总结一下相关网页制作的一些步骤,喜欢的朋友可以一起来学习一下 Dreamweaver这一款专业的网页制作软件,相信相关 ...
- Cleaver快速制作网页PPT
原文首发链接:http://www.jeffjade.com/2015/10/15/2015-10-16-cleaver-make-ppt/ 写在开始之前 互联网时代,以浏览器作为入口,已经有越来越多 ...
- 前端开发css实战:使用css制作网页中的多级菜单
前端开发css实战:使用css制作网页中的多级菜单 在日常工作中,大家都会遇到一些显示隐藏类菜单,比如页头导航.二维码显示隐藏.文本提示等等......而这些效果都是可以使用纯css实现的(而且非常简 ...
- CSS3实现几个常用的网页小效果
主题 由于最近比较忙,自己也没有很充裕的时间可以去做比较丰富的分享.今晚我挤出时间来制作这几个很常用的CSS3网页小效果.最近写JS的时间比例比较多,不过我还是比较钟情于CSS3.所以我还是坚持分享一 ...
- 利用DIV+CSS制作网页过程中常用的基本概念及标签使
CSS主要用于对HTML文件功能的补充及扩展,其作用就是对HTML文件中各种排版进行设置,达到对网页中字体.颜色.背景.图片等的控制,使网页能够完全依照设计者的想法来显示. CSS可以控制网页的显示, ...
随机推荐
- git初探
1 Linux下Git和GitHub环境的搭建 第一步: 安装Git,使用命令 "sudo apt-get install git" 第二步: 到GitHub上创建GitHub帐号 ...
- GitHub 有哪些优秀的项目
GitHub 有哪些优秀的项目 http://www.zhihu.com/question/20584141
- 解决MS Azure 不能ping的问题
PsPing v2.01 PsPing implements Ping functionality, TCP ping, latency and bandwidth measurement. Use ...
- [转]struct实例字段的内存布局(Layout)和大小(Size)
在C/C++中,struct类型中的成员的一旦声明,则实例中成员在内存中的布局(Layout)顺序就定下来了,即与成员声明的顺序相同,并且在默认情况下总是按照结构中占用空间最大的成员进行对齐(Alig ...
- 获取属性名:PropertyNameHelper
获取属性名:PropertyNameHelper namespace NCS.Infrastructure.Querying { public static class PropertyNameHel ...
- TaskTracker获取并执行map或reduce任务的过程(一)
我们知道TaskTracker在默认情况下,每个3秒就行JobTracker发送一个心跳包,也就是在这个心跳包中包含对任务的请求.JobTracker返回给TaskTracker的心跳包中包含有各种a ...
- cocos2d-x 锚点,位置==》动手实验记录 多动手... :)
总结: 1:cocos2d-x的位置由锚点和Position位置 共同决定的.2: cocos2d-x,当位置不设置或者为零的时候, 子节点的锚点位置永远位于父节点的左小角的地方3:我们的自己的游戏编 ...
- SQLite数据类型详解
一.存储种类和数据类型: SQLite将数据值的存储划分为以下几种存储类型: 复制代码代码如下: NULL: 表示该值为NULL值. INTEGER: 无符号整型值. R ...
- Git教程之标签管理
发布一个版本时,我们通常先在版本库中打一个标签,这样,就唯一确定了打标签时刻的版本.将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来.所以,标签也是版本库的一个快照.Git的 ...
- Memcache+Cookie解决分布式系统共享登录状态------------------------------Why Memcached?
每个用户请求向IIS发送一个请求,但IIS服务器的请求数有限,cpu支持的线程数有限,如果一秒钟向这台服务器发送10000次,那么则一般就会有问题,考虑集群, 请求数据分流,几台服务器共同对应一个公共 ...