HTML5动画实现

HTML5动画实现可以通过以下两种方式。

CSS3动画

​ 动画是使元素从一种样式逐渐变化为另一种样式的效果,可以改变任意样式任意次数。通过百分比来规定变化发生的时间,或用关键词“from”和“to”,等同于0%和100%。0%是动画的开始,100%是动画的完成。

CSS3@keyframes规则

@keyframes规则是创建动画,指定一个CSS样式和动画将逐步从目前的样式更改为新的样式。

当在@keyframes创建动画,把它绑定到一个选择器,否则动画不会有任何效果。

至少指定以下两个属性绑定选择器:

  • 规定动画的名称
  • 规定动画的时长
e.g.:
<style>
div
{width:100px;height:100px;background:red;position:relative;//规定动画的名称animation-name:myfirst;//规定动画完成一个周期所花费的秒或毫秒animation-duration:5s;animation-timing-function:linear;animation-delay:2s;animation-iteration-count:infinite;animation-direction:alternate;animation-play-state:running;}@keyframes myfirst
{0%   {background:black; left:0px; top:0px;}25%  {background:yellow; left:200px; top:0px;}50%  {background:blue; left:200px; top:200px;}75%  {background:green; left:0px; top:200px;}100% {background:red; left:0px; top:0px;}
}
//-webkit-、-ms-、-moz-代表支持的浏览器
@-webkit-keyframes myfirst
{0%   {background:black; left:0px; top:0px;}25%  {background:yellow; left:200px; top:0px;}50%  {background:blue; left:200px; top:200px;}75%  {background:green; left:0px; top:200px;}100% {background:red; left:0px; top:0px;}
}</style>

CSS3的动画属性

@keyframes规则和所有动画属性:

描述 CSS
@keyframes 规定动画。 3
animation 所有动画属性的简写属性。 3
animation-name 规定 @keyframes 动画的名称。 3
animation-duration 规定动画完成一个周期所花费的秒或毫秒。默认是 0。 3
animation-timing-function 规定动画的速度曲线。默认是 “ease”。 3
animation-fill-mode 规定当动画不播放时(当动画完成时,或当动画有一个延迟未开始播放时),要应用到元素的样式。 3
animation-delay 规定动画何时开始。默认是 0。 3
animation-iteration-count 规定动画被播放的次数。默认是 1。 3
animation-direction 规定动画是否在下一周期逆向地播放。默认是 “normal”。 3
animation-play-state 规定动画是否正在运行或暂停。默认是 “running”。

Canvas元素结合js

HTML5<canvas>元素用于图形的绘制,通过脚本(通常是JavaScript)来完成。

<canvas>标签只是图形容器,必须使用脚本绘制图形。

创建一个画布

一个画布在网页中是一个矩形框,通过<canvas> 元素来绘制,默认情况下<canvas>元素没有边框和内容,使用style属性添加边框。

<canvas id="myCanvas" width="200" height="100"
style="border:1px solid #000000;">
</canvas>

使用JavaScript绘制画像

canvas本身没有绘图能力。所有的绘制工作必须在JavaScript内部完成:

<body><canvas id="myCanvas" width="200" height="100" style="border:1px solid #c3c3c3;">
</canvas><script>
//获取<canvas.../>元素对应的DOM对象,一个Canvas对象
var c=document.getElementById("myCanvas");
//调用Canvas对象的getContext()方法,该方法返回一个CanvasRenderingContext2D对象,该对象即可绘制图形
var ctx=c.getContext("2d");
//调用CanvasRenderingContext2D对象的方法绘图
ctx.fillStyle="#FF0000";
ctx.fillRect(0,0,150,75);
</script></body>

Canvas坐标

canvas 是一个二维网格。

canvas 的左上角坐标为 (0,0)

fillRect(x,y,width,height) 方法定义了矩形的填充方式

Canvas路径

在Canvas上画线,我们将使用以下两种方法:

  • moveTo(x,y) 定义线条开始坐标
  • lineTo(x,y) 定义线条结束坐标
<canvas id="myCanvas" width="200" height="100" style="border:1px solid #d3d3d3;">
</canvas><script>
//定义开始坐标(0,0), 和结束坐标 (200,100)。然后使用 stroke() 方法来绘制线条:
var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.moveTo(0,0);
ctx.lineTo(200,100);
ctx.stroke();</script>

在canvas中绘制圆形, 我们将使用以下方法:

arc(x,y,r,start,stop)e.g.:
var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.beginPath();
ctx.arc(40,40,40,0,2*Math.PI);
ctx.stroke();

Canvas 文本

使用 canvas 绘制文本,重要的属性和方法如下:

  • font - 定义字体
  • fillText(text,x,y) - 在 canvas 上绘制实心的文本
  • strokeText(text,x,y) - 在 canvas 上绘制空心的文本

使用fillText():

var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.font="30px Arial";
ctx.fillText("Hello World",10,50);

使用stroke Text():

var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.font="30px Arial";
ctx.strokeText("Hello World",10,50);

Canvas渐变

渐变可以填充在矩形, 圆形, 线条, 文本等等, 各种形状可以自己定义不同的颜色。

以下有两种不同的方式来设置Canvas渐变:

  • createLinearGradient(x,y,x1,y1) - 创建线条渐变
  • createRadialGradient(x,y,r,x1,y1,r1) - 创建一个径向/圆渐变

当我们使用渐变对象,必须使用两种或两种以上的停止颜色。

addColorStop()方法指定颜色停止,参数使用坐标来描述,可以是0至1.

使用 createLinearGradient():

var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");// 创建渐变
var grd=ctx.createLinearGradient(0,0,200,0);
grd.addColorStop(0,"red");
grd.addColorStop(1,"white");// 填充渐变
ctx.fillStyle=grd;
ctx.fillRect(10,10,150,80);

使用 createRadialGradient():

var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");// 创建渐变
var grd=ctx.createRadialGradient(75,50,5,90,60,100);
grd.addColorStop(0,"red");
grd.addColorStop(1,"white");// 填充渐变
ctx.fillStyle=grd;
ctx.fillRect(10,10,150,80);

如何实现HTML5动画页面?相关推荐

  1. html5的页面跳转动画,分享7款让你赞叹的HTML5动画

    1. HTML5 3D图片阴影翻转动画 效果很酷 分享一款很酷的HTML5 3D动画特效,这款3D特效可以为你的图片增加阴影的效果,而且可以让图片在鼠标滑过的时候出现3D翻转的动画效果.这和HTML5 ...

  2. 微信笔记html5,微信HTML5活动动画页面开发笔记

    一直在各种微信公共账号里面看到有很多营销手法都是靠这种特炫的活动页面来做宣传,虽然知道是它通过什么技术来实现的,但是一直没有亲手去开发过,正好帮朋友做了一个活动,这里就写篇文章做个笔记吧! 实现步骤: ...

  3. 玩转HTML5移动页面

    (1) 动画雪碧图 涉及的动画十分多,用的元素也十分多,请务必使用雪碧图(Sprite)! 网上的工具有一些可以帮助你生成雪碧图的工具,例如CssGaga,GoPng等等,自动化构建工具Grunt和G ...

  4. 绝对震撼 7款HTML5动画应用及源码

    除非特别声明,PHP100新闻均为原创或投稿报道,转载请注明作者及原文链接 原文地址: http://www.php100.com/html/it/mobile/2014/0702/7030.html ...

  5. html对话框跳转页面,html5各种页面切换效果和模态对话框用法总结

    这篇文章主要为大家介绍了html5各种页面切换效果和模态对话框用法总结,较为详细的介绍了HTML5的各种页面元素的使用技巧,非常具有实用价值,需要的朋友可以参考下 本文详细总结了html5各种页面切换 ...

  6. 做好这5点基本要求 才能算一个合格的HTML5动画

    随着CSS3和HTML5建站技术的发展,动效在网页设计中的作用越来越显著.与静态界面相比,动态的转变更符合人们的认知体系,可以有效降低用户认知负载.这是因为,在网站界面使用动画效果能让元素的变化.界面 ...

  7. html5动画在线制作工具,KoolShow-KoolShow(HTML5动画制作工具) v2.4.4 官方版-CE安全网...

    KoolShow是一款非常专业实用的HTML5动画制作工具,KoolShow界面简洁,功能强大,用户使用这款软件可以为文本.图像.矢量图形.音频.视频.幻灯片和jQuery小部件添加动画效果,辅助用户 ...

  8. linux内核动画,8个炫酷的HTML5动画、应用和游戏

    导读 随着Web技术的不断发展,呈现在我们眼前的Web页面不仅有着越来越丰富的网页元素,而且网页之间的交互也越来越炫酷了.很多开发者已经利用HTML5开发了不少HTML5动画.应用和游戏,本文也主要分 ...

  9. html5页面的手势,HTML5单页面手势滑屏切换如何实现

    这次给大家带来HTML5单页面手势滑屏切换如何实现,怎么实现HTML5单页面手势滑屏切换?HTML5单页面手势滑屏切换的注意事项有哪些,下面就是实战案例,一起来看一下. H5单页面手势滑屏切换是采用H ...

最新文章

  1. 卷积池化计算 深度学习
  2. SERVICE问题解决方法
  3. SAP CRM configuration product在UI上的显示逻辑
  4. IE下列表框不能给option绑定click事件的解决办法
  5. C++中socket编程
  6. java字节码反编译_javap 反编译 java 字节码文件
  7. linux下cron定时任务的总结
  8. 运行Qt程序的一些注意事项
  9. 使用C#如何写入/读取注册表信息
  10. BGP安全特性(华为设备)
  11. vb.net 画多个矩形_电气原理图和接线图识图方法,电气接线图怎么画?你会画吗?...
  12. Dagger2的使用示例
  13. 等待页面所有图片加载完毕
  14. Android MVP开发框架
  15. 构建红图注册到蓝图中
  16. AutoCAD2018打印eps文件
  17. Unity画面像素化shader
  18. 支付宝支付接口遇到的问题总结
  19. ASP.NET - Button、LinkButton和ImageButton
  20. 剑灵洪门崛起怎么修改服务器,剑灵洪门崛起新手操作指南 剑灵洪门崛起新手必看攻略...

热门文章

  1. “超越”(MMCU)中文通用大语言模型测试集预发布
  2. 《从问题到程序:用Python学编程和计算》——练习
  3. python 局域网扫描_Python 局域网主机存活扫描
  4. Liang-Barsky直线段裁剪算法-C++实现(计算机图形学作业)
  5. esxi6.7虚拟机网卡连接第二个虚拟交换机_NAS部署指南 群晖篇六—— NAS兼做路由器,群晖虚拟机套件教程...
  6. ae导出gif插件_AE脚本-一键快速输出GIF动图格式插件脚本 GifGun 1.7.15 Win/Mac 支持AE 2020...
  7. 我们基于kaldi开发的嵌入式语音识别系统升级成深度学习啦
  8. 前端转换图片格式 前端将png格式图片转成jpg格式 前端用使用canvas转换图片格式
  9. office365的订阅用户 为什么还提示我激活
  10. winbox管理端口多少?