前端做卡通动画,简单到难以想象
我把平时工作应用到的笔记整理成几篇关于容器docker的文章,又发了几篇以前鼓捣的大前端全栈nodejs框架eggjs的笔记,结果读者寥寥。没想到随手写了一篇讲解gsap动画库的文章,竟然比所有文章加起来的数据还好,这这这……
好吧,那就随手再写个动画技巧吧。
愤怒的小鸟
先上第一个简单的效果图
我问过朋友之后,他们说我只写核心代码的行为十分可耻,就像告诉他们学好前端,一定能升职加薪,当上总经理,出任CEO,迎娶白富美,走向人生巅峰……
可怎么学,学什么,一概不说。好吧,我面壁……
不过还是要先说核心代码,为啥?因为太简单了!
代码如下:
.content {width: 718px;height: 634px;background: url("./img/bird.png") no-repeat;animation: .3s go steps(2) infinite;
}
@keyframes go {0% {background-position-x: 0px;}100% {background-position-x: -1436px;}
}
学过css的对上面这几行代码都不会陌生吧,挑几个关键的简单解释下:
animation:动画属性,里面定义动画的各项参数。这里代表,动画时长0.3秒,动画名称go,steps缓动函数,将整个动画分为两步(两帧),infinite无限循环动画。
@keyframes:定义动画,这里定义了动画名称为go,效果是动画开始(0%)时,背景位置为0,动画结束(100%)时,背景位置为-1436px。具体用法可查看css基础知识,推荐菜鸟教程,讲得详细,最重要的是有内置编辑器,可以直接看效果。
核心代码讲解完毕,其实这种运动的动画,原理大部分很简单,就是如何实现在这个位置循环播放一连串动作的图片。
我想大部分前端博主讲到这里就不继续讲了,为啥,因为懒o(╯□╰)o
我吸取教训,本篇文章会把从素材图到做成动画,整个过程使用的工具都简单介绍一下。
一连串动作形成的图片,叫雪碧图,上面的小鸟图很粗糙的,只有两个动作合成,形如:
这就是为什么我们要用background-position-x来移动背景的位置了,因为两个图片连在一起,需要移动,才能隐藏上一个,显示下一个。
通过这个也就能看出为什么要用steps函数了,因为如果不做操作,背景图会缓动离开缓动显示,达不到在一个区域闪现整张雪碧图不同位置的效果。
上面动画所有代码如下:
<template><div style="display: flex;justify-content: center;align-items: center;width: 100%;height: 100%"><div class="content" style=""></div></div>
</template><script>export default {name: "index",data() {return {}},mounted() {},methods:{}
}
</script><style scoped>
.content {width: 718px;height: 634px;background: url("./img/bird.png") no-repeat;animation: .3s go steps(2) infinite;
}
@keyframes go {0% {background-position-x: 0px;}100% {background-position-x: -1436px;}
}
</style>
框架用的是vue,ui框架是iview,大家可以看到,导航栏默认设置都没改
人物行走的动画
小鸟飞行动画虽然简单,但是其实已经应用了最核心的两行代码,其他动画不论复杂与否,只要是用雪碧图的形式实现的,原理就大差不差。
参考上面代码,完成任务行走的动画。
我们的素材图片如下:
实现代码如下:
<template><div style="display: flex;justify-content: center;align-items: center;width: 100%;height: 100%"><div class="content" style=""></div></div>
</template><script>export default {name: "index",data() {return {}},mounted() {},methods:{}
}
</script><style scoped>
.content {width: 293px;height: 634px;background: url("./img/walk.png") no-repeat;animation: 1.2s go steps(8) infinite;
}
@keyframes go {0% {background-position-x: 0px;}100% {background-position-x: -2464px;}
}
</style>
可以看出来,除了根据不同尺寸的素材调整.content的宽高和background-position-x的位置,其他完全一样。
最终效果如下:
制作素材方法
上面的小鸟雪碧图,是用两个图合成:
css制作动画,语法简单,各种学习文档详细,当动画复杂度不高时,肯定是首选。
不知道哪个网站有问题,挂载链接时审核不通过,只能写网址了:
将不同的图片合并成雪碧图网站1:https://www.toptal.com/developers/css/sprite-generator
将不同的图片合并成雪碧图网站2:https://www.codeandweb.com/free-sprite-sheet-packer
动画素材网站:https://opengameart.org/content/monster-spritesheet
这个网站里有的是没合成的素材图,有的直接提供了雪碧图,人物行走的动画便是使用的成品图。
想要了解地表最强前端动画库gsap,可以参考我的另一篇文章:gsap实现星空效果动画
前端做卡通动画,简单到难以想象相关推荐
- 《蓝色协议BLUE PROTOCOL》如何做电影动画级别的卡通渲染?
近两年扎堆冒头的开放世界游戏里,模仿塞尔达做卡通渲染风格的产品不在少数. 在更重视技术侧的国内环境下,摆在这类产品面前的一道难题,是如何让卡渲与其他产品拉开视觉差异,形成自己的一套风格化表现.而对于概 ...
- (简单课设)前端小白刚做的一个简单的移动端项目的分享和总结
前端小白刚做的一个简单的移动端项目的分享和总结 所用技术为简单的div+css 直接上图片 代码部分 小滴服务 接下来是企业项目部分 接下来是我的小滴部分 (另外两个部分内容非常简单,没必要粘贴代码了 ...
- 【PR】简单一招教你使用蒙版做文字动画
更多PR简单技巧尽在专栏中,会一直更新PR使用技巧 简单一招教你使用蒙版做文字动画 效果图 制作步骤 还可以加一个文字的缩放,从小到大的过程 博主微信欢迎交流 效果图 制作步骤 点击选择的字幕 点击钢 ...
- 教你用最简单的方法做布丁动画
以下文章版权归叶景天博客所有 昨天教了大家如何利用.mask属性做遮罩动画,今天为大家介绍一个新的动画,老规矩,直接上效果图 这是一个非常简单又简单的布丁动画,我们可以在很多手机APP里头都看见过这场 ...
- html如何实现过渡效果,前端如何实现动画过渡效果
简介 动画这个概念非常宽泛,涉及各个领域,这里我们把范围缩小到前端网页应用层面上,不用讲游戏领域的Animate,一切从最简单的开始. 目前大部分网页应用都是基于框架开发的,比如Vue,React等, ...
- 前端实现ppt动画播放(H5+C3+JS+JQ)
大家都应该用过ppt(Microsoft PowerPoint 2010)来做过一些可课件或者动画效果吧,其实,在ppt里面的动画在网页上也可以实现的,并且会更加炫酷.可以自己找个动画ppt来动动手实 ...
- 前端笔记:动画介绍与CSS动画说明
文章目录 目的 动画介绍 CSS动画 JavaScript动画 Canvas动画 SVG动画 CSS动画 CSS Transition CSS Animation timing-function CS ...
- layui导入 加载动画_厉害了!这个免费神器帮你无脑做施工动画
你好,这里是 BIMBOX.今天诚意给你安利一款好用免费的施工动画软件. 很多施工企业在建完模型后,都会用模拟动画的形式展示施工方案流程.做施工方案可视化评审.质量安全交底等.施工模拟动画这两年也成 ...
- 图像处理(二十一)基于数据驱动的人脸卡通动画生成-Siggraph Asia 2014
在现实生活中,我们经常会去评价一个人,长得是否漂亮.是不是帅哥美女,然而如何用五官的数据去评价一个人是否长得五官比例协调,我们却很难说出来,也就是你为什么觉得某个人长得漂亮?是因为她眼睛大,嘴巴小,还 ...
最新文章
- 《深入理解Java虚拟机》笔记5——类加载机制与字节码执行引擎
- arcgis导入excel数据_导入Excel数据到ArcGIS属性表的两种实用方法
- Placeholder in IE8 and older
- 英语名词复数的一般构成方法以及读音规则
- W10关闭不必要的服务
- NASM汇编语言与计算机系统04-实模式-屏幕显示不定长度的字符串(cmp/je)
- 四步帮你分析用户流失原因 - 产品设计GAP模型
- mysql innodb ibd,mysql innodb 从 ibd 文件恢复表数据
- Java程序员必备的一些流程图/架构图(拿走不谢)
- 几款永久免费内网穿透,好用且简单
- 如何在把微信公众号生成链接
- 列表块元素 ul和ol
- 关于计算机的手抄报知识,电子手抄报
- 国企面试-260题-单选题 下列哪组成语反映了同一种人际关系: A 琴瑟和鸣 破镜重圆 B 负荆请罪 载舟覆舟 C 结草衔环 青梅竹马 D 相濡以沫 舐犊情深
- 如何在博客园中自定义背景
- ThreeJS导入外部obj和mtl
- 【C++】set/multiset、map/multimap的使用
- PostgreSQL的MVCC
- cocos做飞机大战笔记【根据道具设置子弹】
- PS流(ISO13818和GB28181)分析
热门文章
- code length overflow 使用qrcode.react做二维码转换的字符数上限/规则
- linux查看主板最大内存容量,Linux下查看内存插槽数、最大...-linux下手动清理内存或缓存的...-查看linux主板内存槽与内存信息的方法详解_169IT.COM...
- 优化ANSYS软件许可证、提升许可证使用效率
- 烟雨雾霏岁不逝, 权将残生付青云
- 因特网MySQL服务器_因特网服务器的主要功能
- 鸿蒙支持小米,魅族宣布接入鸿蒙,小米OV却断然拒绝?官方:纯属造谣
- 互联网家装遭遇寒冬,齐家网、土巴兔们能否安稳度过期终考?
- 成为会带团队的技术人 知人善用:借事修人,借人成事
- 洛谷 P2343 宝石管理系统
- [附源码]JAVA毕业设计养老智慧服务平台(系统+LW)