HTML5 Canvas动画效果演示
10款让人惊叹的html5动画效果
10款让人惊叹的html5动画效果这里介绍10款让人叹为观止的html5动画效果1、15种html5+css3图片堆叠图片展示特效这是一款html5和css3制作的图片堆叠图片展示特效,就像一幅扑克牌堆叠在一起,最开始只能看到一张,点击按钮后就会展开成几张,非常有意思。
2、html5 svg+css3制作图片边框运动动画效果一款使用html5 svg技术制作的图片边框运动动画效果,鼠标移动到图片上时,便会有几条线绕着边框运动,共有4种不同的效果。
建议使用Firefox或Chrome浏览器观看。
3、21种html5+css3鼠标悬停hover超链接导航条动画效果利用css3 transition属性制作的21种不同的鼠标悬停效果。
当鼠标hover或悬停在超链接上时,会触发各种动画效果。
每种动画效果都十分独特,可用于网站导航。
4、18种基于html5 svg和css3的神奇超链接动画效果普通的超链接效果是鼠标放上去出现一条下划线,本插件异想天开的使用html5 svg和css3打造出18种很神奇的超链接动画效果。
每种超链接动画效果都有它的独到之处。
5、html5+css3网格图片3d翻转Loading页面切换效果这是一个图片html5和css3制作的3d翻转Loading页面切换效果。
在页面上以网格的形式展示所有的页面缩略图,当点击了缩略图片后,图片进行3d翻转,然后加载相应的页面内容。
6、12种利用html5+css3打造的消息提示框效果这是12种风格各异的弹出消息提示框效果,使用html5和css3 animation属性制作,有各种旋转、翻转、伸展特效。
效果非常华丽。
7、15种html5 svg+css3制作的超酷响应式tab选项卡效果这是15种效果非常酷的tab选项卡效果,使用的技术分别是html5 svg,css 伪元素,css transitions,每种效果都带有过渡动画,并且是响应式的。
精选19款华丽的HTML5动画和实用案例
精选19款华丽的HTML5动画和实⽤案例下⾯是本⼈收集的19款超酷HTML5动画和实⽤案例,觉得不错,分享给⼤家。
1、HTML5 Canvas⽕焰喷射动画效果还记得以前分享过的⼀款HTML5烟花动画,今天我们要来分享⼀款类似的效果,⼀款基于HTML5 Canvas⽕焰喷射动画。
⽤⿏标拖动⼀条直线,直线长度表⽰⽕焰喷射的⼒度,另外,⽕焰在运动中还可以反射效果哦。
2、⽴⽅体旋转动画之前我们已经分享⼀款,可以切换⾄正⽅体的任意⼀⾯。
今天我们再来分享⼀款绚丽的HTML5 3D⽴⽅体旋转动画,这款⽴⽅体的⾊彩看上去⾮常艳丽,旋转起来的动画效果也⼗分流畅。
是⼀款很不错的HTML5 3D动画效果。
3、HTML5/CSS3实现⼤风车旋转动画这次我们要来分享⼀款很酷的HTML5动画,是⼀个可以旋转的⼤风车动画效果,回顾⼀下利⽤HTML5实现的旋转动画,我们可以看,它们的实现都是利⽤CSS3的transform:rotate属性,这款⼤风车动画的确⽐较厉害的。
4、HTML5⼩车动画很酷的HTML5吉普车有⼏天没有分享HTML5动画了,之前很多HTML5动画都是利⽤CSS3的⼀些特性和Canvas特性来完成,⽐如这个就利⽤CSS3的动画特性,就利⽤了HTML5 Canvas特性。
今天我们要分享⼀款利⽤HTML5/CSS3实现的吉普车动画,⼩车可以⽔平滚动,⾮常逼真。
5、纯CSS3 3D图⽚翻转展⽰图⽚3D阴影效果之前我们分享过⼀些HTML5图⽚3D效果,这篇⽂章中我们可以看到很多3D的图⽚特效。
今天我们再来分享⼀款利⽤纯CSS3实现的3D图⽚翻转展⽰特效,点击图⽚或者下⽅的翻页按钮即可选中相应的图⽚,并实现翻转展⽰效果。
6、HTML5摆动的⽂字特效类似柳枝摆动之前我们在上分享过⼀些HTML5⽂字特效,像这款,像这款都⾮常有特⾊。
今天我们来分享⼀款可以摆动的HTML5⽂字特效,⽂字垂直下垂,并可以在微风中微微摆动,就像春风中的柳枝⼀样。
如何使用JavaScript实现Canvas绘图和动画
如何使用JavaScript实现Canvas绘图和动画使用JavaScript来实现Canvas绘图和动画是一种常见的技术,它可以实现各种各样的图形效果和动态交互,非常适合用于创建各种类型的网页动画和游戏。
在本文中,我将详细介绍如何使用JavaScript来绘制图形、实现动画以及一些常用的绘图和动画效果。
一、构建Canvas元素为了开始绘制和动画,我们首先需要在HTML文档中创建一个Canvas元素。
Canvas是HTML5中新增的元素,它提供了一个绘制2D 图形的区域,我们可以通过JavaScript来操纵它。
在HTML文档的body标签中添加以下代码:```<canvas id="myCanvas" width="500" height="300"></canvas> ```上面的代码创建了一个id为myCanvas的Canvas元素,宽度为500像素,高度为300像素。
二、获取Canvas上下文要绘制图形或进行动画,我们需要获取Canvas的上下文对象。
在JavaScript中,我们可以使用`getContext()`方法来获取上下文对象。
在JavaScript中,使用以下代码获取Canvas上下文对象:```const canvas = document.getElementById('myCanvas');const ctx = canvas.getContext('2d');```上面的代码通过`getElementById`方法获取了id为myCanvas的Canvas元素,然后通过`getContext`方法获取了2D上下文对象ctx。
三、绘制基本图形下面介绍如何使用JavaScript在Canvas上绘制一些基本图形,例如矩形、圆形和直线。
Canvas提供了一系列的API可以用于绘制图形。
惊艳的HTML5动画特效及源码
惊艳的HTML5动画特效及源码今天我们要来分享⼀些很酷的HTML5动画演⽰,HTML5的强⼤之处在于它可以利⽤canvas的特性来绘制很多普通⽹页⽆法完成的图形和动画,canvas就像⼀块超级画板,在上⾯不仅可以实现平⾯图形,⽽且⼀些3D动画也⾮常简单。
很多HTML5动画也都基于canvas,⼀起来看看吧。
HTML5/CSS3实现⼤风车旋转动画作为今天⾸款HTML5动画,这款⼤风车旋转效果的确⾮常棒,它是⽤纯CSS3实现。
核⼼CSS代码:.wmd1{-webkit-transform: scale(.6);position:absolute;top:180px;left:200px;perspective: 1000px;}.base{ }.blades{width: 350px;height: 350px;left: 10%;top: 10%;z-index:2;border-radius: 50%;position: absolute;margin-top: -30px;margin-left: 50px;animation: spin 6s linear infinite;}.blade1 {background: white;position:absolute;width:41px;height:139px;top:-10px;left:150.5px;transform:rotate(0deg);display:inline-block;background:linear-gradient(135deg, transparent 20px, white 0),linear-gradient(225deg, transparent 20px, white 0),linear-gradient(315deg, transparent 20px, white 0),linear-gradient(45deg, transparent 20px, white 0);background-position: top left, top right, bottom right, bottom left;background-size: 50% 50%;background-repeat: no-repeat;}.blade2 {background:white;position:absolute;width:41px;height:139px;top:105.5px;left:41px;transform:rotate(-90deg);display:inline-block;background:linear-gradient(135deg, transparent 20px, white 0),linear-gradient(225deg, transparent 20px, white 0),linear-gradient(315deg, transparent 20px, white 0),linear-gradient(45deg, transparent 20px, white 0);background-position: top left, top right, bottom right, bottom left;background-size: 50% 50%;background-repeat: no-repeat;}.blade3 {background:white;position:absolute;width:41px;height:139px;top:105.5px;right:41px;transform:rotate(-270deg);display:inline-block;background:linear-gradient(135deg, transparent 20px, white 0),linear-gradient(225deg, transparent 20px, white 0),linear-gradient(315deg, transparent 20px, white 0),linear-gradient(45deg, transparent 20px, white 0);background-position: top left, top right, bottom right, bottom left; background-size: 50% 50%;background-repeat: no-repeat;}.blade4 {background:white;position:absolute;width:41px;height:139px;bottom:-10px;left:150.5px;transform:rotate(180deg);display:inline-block;background:linear-gradient(135deg, transparent 20px, white 0),linear-gradient(225deg, transparent 20px, white 0),linear-gradient(315deg, transparent 20px, white 0),linear-gradient(45deg, transparent 20px, white 0);background-position: top left, top right, bottom right, bottom left; background-size: 50% 50%;background-repeat: no-repeat;}.vane1{width:1px;height:350px;left:175px;background:white;position:absolute;transform:rotate(90deg);}.vane2{width:1px;height:350px;left:171.5px;background:white;position:absolute;transform:rotate(180deg);}.base .bottom_base{position:absolute;width:90px;height:100px;left:162px;border-right: 16px solid transparent;border-left: 16px solid transparent;border-bottom: 380px solid white;opacity:.8;z-index:-1;top:42.5px;}ul{position:absolute;top:180px;left:-30px;}li{width:10px;height:10px;background:white;padding:2px;display:block;margin: 30px;box-shadow: inset 0px -2px 0px lightgray;}li:nth-child(2){position:absolute;top:-45px;left:20px;}li:nth-child(1){position:absolute;top:35px;left:50px;}li:nth-child(3){position:absolute;top:75px;left:50px;}@keyframes spin {0% {transform:rotate(0deg);}100% {transform:rotate(-360deg);}}View Code纯CSS3 3D图⽚翻转展⽰这是⼀款基于CSS3的3D图⽚展⽰,在图⽚切换时将会有翻转的动画效果。
25款不得不说的html5+css3动画效果
25款不得不说的html5+css3动画效果这25款动画效果分别使⽤了html5 svg、css3 transform、css3 transition、css3 animation等制作⽽成。
1、9种梦幻般的html5+css3 tooltip⿏标提⽰插件效果这个tooltip⿏标提⽰插件将带您离开黄底⿊字的html tooltip原始时代。
该插件共9种效果,使⽤html5 svg和css3 transform属性完成。
该tooltip带图⽚带动画,效果⼀流。
>>2、19种基于css3的超华丽模态窗⼝效果这是⼀款集19种模态窗⼝效果于⼀体的css3插件。
使⽤了css3 transition 和css3 animation属性。
某些模态窗⼝中还加⼊了3d透视效果。
>>3、在桌⾯和移动设备上展⽰响应式设计这个响应式设计展⽰了在不同设备的显⽰屏上⽹页的显⽰效果,这种响应式设计保证了在所有显⽰屏上获得最佳显⽰效果。
>>4、 html5 svg打开圣诞礼盒和下雪动画效果⼀款很炫的html5 svg打开圣诞礼盒和下雪动画效果。
点击礼盒后会飞出许多icon礼物,之后会有雪花从屏幕上⽅飘落。
>>5、html5 css3为移动设备设计的可⾃由伸缩的搜索框代码这是⼀个为移动设备设计的可⾃由伸缩的html5搜索框代码,使⽤css3 transition属性和少量的javascript完成。
>>6、 css3 transitions和伪元素制作4种超酷⿏标经过hover动画效果⼀款使⽤css3 transitions和伪元素制作的4种⿏标经过hover动画效果,4种⿏标经过hover动画效果分别是:滴⽔效果,圆⼼放⼤,旋转放⼤和飞翔的独眼怪。
>>7、13款html5 svg页⾯loading加载动画效果13款使⽤html5 svg技术打造的页⾯loading加载动画效果。
[HTML5资料]Canvas教程
HTML5资料1Canvas教程<canvas>是一个新的用于通过脚本(通常是JavaScript)绘图的HTML元素。
例如,他可以用于绘图、制作图片的组合或者简单的动画(当然并不那么简单)。
It can for instance be used to draw graphs, make photo compositions or do simple (and not so simple) animations.1.1基本用法Basic usage<canvas>元素Let's start this tutorial by looking at the <canvas> element itself.让我们从<canvas>元素的定义开始吧。
<canvas id="tutorial" width="150" height="150"></canvas>This looks a lot like the <img> element, the only difference is that it doesn't have the src and alt attributes. <canvas>看起来很像<img>,唯一不同就是它不含 src 和 alt 属性。
The <canvas> element has only two attributes - width and height. These are both optional and can also be set using DOM properties or CSS rules.它只有两个属性,width 和 height,两个都是可选的,并且都可以 DOM 或者 CSS 来设置。
HTML5之Canvas绘图——使用Canvas绘制图形的基本教程
HTML5之Canvas绘图——使⽤Canvas绘制图形的基本教程HTML5⽕的正热,最近有个想法也是要⽤到HTML的相关功能,所以也要好好学习⼀把。
好好看了⼀下Canvas的功能,感觉HTML5在客户端交互的功能性越来越强了,今天看了⼀下Canvas绘图,下边是⼏个实例,记下以备后⽤。
1、使⽤Canvas绘制直线:<!doctype html><html><head><meta charset="UTF-8"></head><style type="text/css">canvas{border:dashed 2px #CCC}</style><script type="text/javascript">function $$(id){return document.getElementById(id);}function pageLoad(){var can = $$('can');var cans = can.getContext('2d');cans.moveTo(20,30);//第⼀个起点cans.lineTo(120,90);//第⼆个点cans.lineTo(220,60);//第三个点(以第⼆个点为起点)cans.lineWidth=3;cans.strokeStyle = 'red';cans.stroke();}</script><body onload="pageLoad();"><canvas id="can" width="400px" height="300px">4</canvas></body></html>这⾥⽤到的两个API⽅法,moveTo和lineTo分别是线段的起点和终点坐标,变量为(X坐标,Y坐标),strokeStyle、stroke分别路径绘制样式和绘制路径。
HTML5 Canvas平移,放缩,旋转演示
HTML5 Canvas中提供了实现图形平移,旋转,放缩的API。
平移(translate)平移坐标translate(x, y)意思是把(0,0)坐标平移到(x, y),原来的(0,0)坐标则变成(-x, -y)图示如下:任何原来的坐标点p(ox, oy)在translate之后的坐标点为p(ox-x, oy-y),其中点(x, y)为平移点坐标translate(x, y)。
代码演示:// translate is move the startpoint to centera and back to top left cornerfunction renderText(width, height, context) {context.translate(width/ 2, height / 2); // 中心点坐标为(0, 0)context.font="18px Arial";context.fillStyle="blue";context.fillText("Please Press <Esc> to Exit Game",5,50);context.translate(-width/2, -height/2); // 平移恢复(0,0)坐标为左上角context.fillText("I'm Back to Top",5,50);}放缩(Scale)Scale(a, b)意思是将对象沿着XY轴分别放缩至a*x, b*y大小。
效果如图示:// translation the rectangle.function drawPath(context) {context.translate(200,200);context.scale(2,2);// Scale twice size of original shapecontext.strokeStyle= "green";context.beginPath();context.moveTo(0,40);context.lineTo(80,40);context.lineTo(40,80);context.closePath();context.stroke();}旋转(rotate)旋转角度rotate(Math.PI/8)旋转前的坐标p(x, y)在对应的旋转后的坐标P(rx, ry)为Rx = x * cos(-angle) - y * sin(-angle);Ry = y * cos(-angle) + x * sin(-angle);旋转90度可以简化为:Rx = y;Ry = -x;Canvas中旋转默认的方向为顺时针方向。
h5动画效果案例
h5动画效果案例H5动画效果案例H5动画是指运用HTML5技术创建的动画效果,通过使用canvas、css3、javascript等技术,可以实现各种各样的动画效果。
下面将介绍一个H5动画效果案例。
案例名称:炫彩粒子动画案例描述:该案例通过使用HTML5技术创建了一个炫彩粒子动画效果。
整个动画效果呈现出多个不规则的粒子从屏幕中心飞散,随机变换颜色并以较快的速度旋转。
同时,利用鼠标移动的事件,可以改变粒子的运动方向和速度,增加了互动性和趣味性。
案例实现步骤:1. 创建一个HTML文件,设置文档类型为HTML5。
在文档中引入必要的CSS和JavaScript文件。
2. 创建一个canvas元素,并设置其宽度和高度,以及背景颜色。
3. 在JavaScript文件中编写动画效果的逻辑代码:- 创建一个粒子类,包含粒子坐标、颜色、速度等属性,并定义粒子的绘制方法;- 创建一个粒子数组,用来存储所有粒子的实例;- 在动画循环中,对每个粒子进行更新和绘制操作,实现粒子的飞散效果;- 添加鼠标移动事件监听,根据鼠标移动的位置改变粒子的运动方向和速度。
4. 在初始化函数中,创建指定数量的粒子实例,并随机生成其初始位置、颜色和速度。
5. 在HTML文件中添加一个容器元素,并将canvas元素添加到容器中。
6. 在浏览器中打开HTML文件,即可看到炫彩粒子动画效果。
案例效果展示:炫彩粒子在屏幕中心飞散,随机变换颜色并以较快的速度旋转。
当鼠标移动时,粒子的运动方向和速度会随之改变,增加了动画的趣味性和互动性。
案例优点:该案例通过使用HTML5技术创建了一个炫彩粒子动画效果,具有较强的视觉冲击力和趣味性。
动画效果流畅,响应速度快,体验良好。
案例应用场景:该动画效果可以应用于网页设计、广告宣传等领域,用来吸引用户的注意力,增加网页的艺术感和交互性。
同时也可以用来展示产品和服务,提升用户对品牌的认知和关注度。
总结:通过使用HTML5技术创建动画效果,可以实现各种各样的动画效果,为网页设计和广告宣传提供了新的可能性。
HTML5实现动画效果的方式汇总
HTML5实现动画效果的⽅式汇总⼩编以⼀个运动的⼩车为例⼦,讲述了三种实现HTML5动画的⽅式,思路清晰,动画不仅仅是canvas,还有css3和javascript.通过合理的选择,来实现最优的实现。
PS:由于显卡、录制的帧间隔,以及可能你电脑处理器的原因,播放过程可能有些不太流畅或者失真!分三种⽅式实现:(1) canvas元素结合JS(2) 纯粹的CSS3动画(暂不被所有主流浏览器⽀持,⽐如IE)(3) CSS3结合Jquery实现知道如何使⽤CSS3动画⽐知道如何使⽤<canvas>元素更重要:因为浏览器能够优化那些元素的性能(通常是他们的样式,⽐如CSS),⽽我们使⽤canvas⾃定义画出来的效果却不能被优化。
原因⼜在于,浏览器使⽤的硬件主要取决于显卡的能⼒。
⽬前,浏览器没有给予我们直接访问显卡的权⼒,⽐如,每⼀个绘画操作都不得不在浏览器中先调⽤某些函数。
1.canvashtml代码:复制代码代码如下:<html><head><meta charset="UTF-8" /><title>Animation in HTML5 using the canvas element</title></head><body onload="init();"><canvas id="canvas" width="1000" height="600">Your browser does not support the <code><canvas></code>-element.Please think about updating your brower!</canvas><div id="controls"><button type="button" onclick="speed(-0.1);">Slower</button><button type="button" onclick="play(this);">Play</button><button type="button" onclick="speed(+0.1)">Faster</button></div></body></html>js代码:定义⼀些变量:复制代码代码如下:var dx=5, //当前速率rate=1, //当前播放速度ani, //当前动画循环c, //画图(Canvas Context)w, //汽车[隐藏的](Canvas Context)grassHeight=130, //背景⾼度carAlpha=0, //轮胎的旋转⾓度carX=-400, //x轴⽅向上汽车的位置(将被改变)carY=300, //y轴⽅向上汽车的位置(将保持为常量)carWidth=400, //汽车的宽度carHeight=130, //汽车的⾼度tiresDelta=15, //从⼀个轮胎到最接近的汽车底盘的距离axisDelta=20, //汽车底部底盘的轴与轮胎的距离radius=60; //轮胎的半径为了实例化汽车canvas(初始时被隐藏),我们使⽤下⾯的⾃执⾏的匿名函数复制代码代码如下:(function(){var car=document.createElement('canvas'); //创建元素car.height=carHeight+axisDelta+radius; //设置⾼度car.width=carWidth; //设置宽度w=car.getContext('2d');})();点击“Play”按钮,通过定时重复执⾏“画汽车”操作,来模拟“帧播放”功能:复制代码代码如下:function play(s){ //参数s是⼀个buttonif(ani){ //如果ani不为null,则代表我们当前已经有了⼀个动画clearInterval(ani); //所以我们需要清除它(停⽌动画)ani=null;s.innerHTML='Play'; //重命名该按钮为“播放”}else{ani=setInterval(drawCanvas,40); //我们将设置动画为25fps[帧每秒],40/1000,即为⼆⼗五分之⼀s.innerHTML='Pause'; //重命名该按钮为“暂停”}}加速,减速,通过以下⽅法,改变移动距离的⼤⼩来实现:复制代码代码如下:function speed(delta){var newRate=Math.max(rate+delta,0.1);dx=newRate/rate*dx;rate=newRate;}页⾯加载的初始化⽅法://initfunction init(){c=document.getElementById('canvas').getContext('2d');drawCanvas();}主调⽅法:复制代码代码如下:function drawCanvas(){c.clearRect(0,0,c.canvas.width, c.canvas.height); //清除Canvas(已显⽰的),避免产⽣错误c.save(); //保存当前坐标值以及状态,对应的类似“push”操作drawGrass(); //画背景c.translate(carX,0); //移动起点坐标drawCar(); //画汽车(隐藏的canvas)c.drawImage(w.canvas,0,carY); //画最终显⽰的汽车c.restore(); //恢复Canvas的状态,对应的是类似“pop”操作carX+=dx; //重置汽车在X轴⽅向的位置,以模拟向前⾛carAlpha+=dx/radius; //按⽐例增加轮胎⾓度if(carX>c.canvas.width){ //设置某些定期的边界条件carX=-carWidth-10; //也可以将速度反向为dx*=-1;}}画背景:复制代码代码如下:function drawGrass(){//创建线性渐变,前两个参数为渐变开始点坐标,后两个为渐变结束点坐标var grad=c.createLinearGradient(0,c.canvas.height-grassHeight,0,c.canvas.height); //为线性渐变指定渐变⾊,0表⽰渐变起始⾊,1表⽰渐变终⽌⾊grad.addColorStop(0,'#33CC00');grad.addColorStop(1,'#66FF22');c.fillStyle=grad;c.lineWidth=0;c.fillRect(0,c.canvas.height-grassHeight,c.canvas.width,grassHeight);}画车⾝:复制代码代码如下:function drawCar(){w.clearRect(0,0,w.canvas.width,w.canvas.height); //清空隐藏的画板w.strokeStyle='#FF6600'; //设置边框⾊w.lineWidth=2; //设置边框的宽度,单位为像素w.fillStyle='#FF9900'; //设置填充⾊w.beginPath(); //开始绘制新路径w.rect(0,0,carWidth,carHeight); //绘制⼀个矩形w.stroke(); //画边框w.fill(); //填充背景w.closePath(); //关闭绘制的新路径drawTire(tiresDelta+radius,carHeight+axisDelta); //我们开始画第⼀个轮⼦drawTire(carWidth-tiresDelta-radius,carHeight+axisDelta); //同样的,第⼆个}画轮胎:复制代码代码如下:function drawTire(x,y){w.save();w.translate(x,y);w.rotate(carAlpha);w.strokeStyle='#3300FF';w.lineWidth=1;w.fillStyle='#0099FF';w.beginPath();w.arc(0,0,radius,0,2*Math.PI,false);w.fill();w.closePath();w.beginPath();w.moveTo(radius,0);w.lineTo(-radius,0);w.stroke();w.closePath();w.beginPath();w.moveTo(0,radius);w.lineTo(0,-radius);w.stroke();w.closePath();w.restore();}由于原理简单,并且代码中作了详细注释,这⾥就不⼀⼀讲解!2.CSS3你将看到我们未通过⼀句JS代码就完全实现了和上⾯⼀样的动画效果:HTML代码:复制代码代码如下:<html><head><meta charset="UTF-8" /><title>Animations in HTML5 using CSS3 animations</title></head><body><div id="container"><div id="car"><div id="chassis"></div><div id="backtire" class="tire"><div class="hr"></div><div class="vr"></div></div><div id="fronttire" class="tire"><div class="hr"></div><div class="vr"></div></div></div><div id="grass"></div></div><footer></footer></body></html>CSS代码:body{padding:0;margin:0;}定义车⾝与轮胎转到的动画(你会看到基本每⼀个动画都有四个版本的定义:原⽣版本/webkit【Chrome|Safari】/ms【为了向后兼容IE10】/moz【FireFox】)复制代码代码如下:/*定义动画:从-400px的位置移动到1600px的位置 */@keyframes carAnimation{0% { left:-400px; } /* 指定初始位置,0%等同于from*/100% { left:1600px; } /* 指定最终位置,100%等同于to*/}/* Safari and Chrome */@-webkit-keyframes carAnimation{0% {left:-400px; }100% {left:1600px; }}/* Firefox */@-moz-keyframes carAnimation{0% {left:-400; }100% {left:1600px; }}/*IE暂不⽀持,此处定义是为了向后兼容IE10*/@-ms-keyframes carAnimation{0% {left:-400px; }100%{left:1600px; }} @keyframes tyreAnimation{0% {transform: rotate(0); }100% {transform: rotate(1800deg); }}@-webkit-keyframes tyreAnimation{0% { -webkit-transform: rotate(0); }100% { -webkit-transform: rotate(1800deg); }}@-moz-keyframes tyreAnimation{0% { -moz-transform: rotate(0); }100% { -moz-transform: rotate(1800deg); }}@-ms-keyframes tyreAnimation{0% { -ms-transform: rotate(0); }100% { -ms-transform: rotate(1800deg); }} #container{position:relative;width:100%;height:600px;overflow:hidden; /*这个很重要*/}#car{position:absolute; /*汽车在容器中采⽤绝对定位*/width:400px;height:210px; /*汽车的总⾼度,包括轮胎和底盘*/z-index:1; /*让汽车在背景的上⽅*/top:300px; /*距顶端的距离(y轴)*/left:50px; /*距左侧的距离(x轴)*//*以下内容赋予该元素预先定义的动画及相关属性*/-webkit-animation-name:carAnimation; /*名称*/-webkit-animation-duration:10s; /*持续时间*/-webkit-animation-iteration-count:infinite; /*迭代次数-⽆限次*/-webkit-animation-timing-function:linear; /*播放动画时从头到尾都以相同的速度*/ -moz-animation-name:carAnimation; /*名称*/-moz-animation-duration:10s; /*持续时间*/-moz-animation-iteration-count:infinite; /*迭代次数-⽆限次*/-moz-animation-timing-function:linear; /*播放动画时从头到尾都以相同的速度*/ -ms-animation-name:carAnimation; /*名称*/-ms-animation-duration:10s; /*持续时间*/-ms-animation-iteration-count:infinite; /*迭代次数-⽆限次*/-ms-animation-timing-function:linear; /*播放动画时从头到尾都以相同的速度*/ animation-name:carAnimation; /*名称*/animation-duration:10s; /*持续时间*/animation-iteration-count:infinite; /*迭代次数-⽆限次*/animation-timing-function:linear; /*播放动画时从头到尾都以相同的速度*/}/*车⾝*/#chassis{position:absolute;width:400px;height:130px;background:#FF9900;border: 2px solid #FF6600;}/*轮胎*/.tire{z-index:1; /*同上,轮胎也应置于背景的上⽅*/position:absolute;bottom:0;border-radius:60px; /*圆半径*/height:120px; /* 2*radius=height */width:120px; /* 2*radius=width */background:#0099FF; /*填充⾊*/border:1px solid #3300FF;-webkit-animation-name:tyreAnimation;-webkit-animation-duration:10s;-webkit-animation-iteration-count:infinite;-webkit-animation-timing-function:linear;-moz-animation-name:tyreAnimation;-moz-animation-duration:10s;-moz-animation-iteration-count:infinite;-moz-animation-timing-function:linear;-ms-animation-name:tyreAnimation;-ms-animation-duration:10s;-ms-animation-iteration-count:infinite;-ms-animation-timing-function:linear;animation-name:tyreAnimation;animation-duration:10s;animation-iteration-count:infinite;animation-timing-function:linear;}#fronttire{right:20px; /*设置右边的轮胎距离边缘的距离为20*/}#backtire{left:20px; /*设置左边的轮胎距离边缘的距离为20*/}#grass{position:absolute; /*背景绝对定位在容器中*/width:100%;height:130px;bottom:0;/*让背景⾊线性渐变,bottom,表⽰渐变的起始处,第⼀个颜⾊值是渐变的起始值,第⼆个颜⾊值是终⽌值 */ background:linear-grdaient(bottom,#33CC00,#66FF22);background:-webkit-linear-gradient(bottom,#33CC00,#66FF22);background:-moz-linear-gradient(bottom,#33CC00,#66FF22);background:-ms-linear-gradient(bottom,#33CC00,#66FF22);}.hr,.vr{position:absolute;background:#3300FF;}.hr{height:1px;width:100%; /*轮胎的⽔平线*/left:0;top:60px;}.vr{width:1px;height:100%; /*轮胎的垂直线*/left:60px;top:0;}3.JQuery与CSS3这是⼀个效果与兼容性俱佳的⽅式(特别对于IE9暂不⽀持CSS3⽽⾔)HTML代码(可以看到与CSS3中的HTML代码并⽆不同):复制代码代码如下:<html><head><meta charset="UTF-8" /><title>Animations in HTML5 using CSS3 animations</title></head><body><div id="container"><div id="car"><div id="chassis"></div><div id="backtire" class="tire"><div class="hr"></div><div class="vr"></div></div><div id="fronttire" class="tire"><div class="hr"></div><div class="vr"></div></div></div><div id="grass"></div></div><footer></footer></body></html>CSS:<style>body{padding:0;margin:0;}#container{position:relative;width:100%;height:600px;overflow:hidden; /*这个很重要*/}#car{position:absolute; /*汽车在容器中采⽤绝对定位*/width:400px;height:210px; /*汽车的总⾼度,包括轮胎和底盘*/z-index:1; /*让汽车在背景的上⽅*/top:300px; /*距顶端的距离(y轴)*/left:50px; /*距左侧的距离(x轴)*/}/*车⾝*/#chassis{position:absolute;width:400px;height:130px;background:#FF9900;border: 2px solid #FF6600;}/*轮胎*/.tire{z-index:1; /*同上,轮胎也应置于背景的上⽅*/position:absolute;bottom:0;border-radius:60px; /*圆半径*/height:120px; /* 2*radius=height */width:120px; /* 2*radius=width */background:#0099FF; /*填充⾊*/border:1px solid #3300FF;-o-transform:rotate(0deg); /*旋转(单位:度)*/-ms-transform:rotate(0deg);-webkit-transform:rotate(0deg);-moz-transform:rotate(0deg);}#fronttire{right:20px; /*设置右边的轮胎距离边缘的距离为20*/}#backtire{left:20px; /*设置左边的轮胎距离边缘的距离为20*/}#grass{position:absolute; /*背景绝对定位在容器中*/width:100%;height:130px;bottom:0;/*让背景⾊线性渐变,bottom,表⽰渐变的起始处,第⼀个颜⾊值是渐变的起始值,第⼆个颜⾊值是终⽌值 */ background:linear-grdaient(bottom,#33CC00,#66FF22);background:-webkit-linear-gradient(bottom,#33CC00,#66FF22);background:-moz-linear-gradient(bottom,#33CC00,#66FF22);background:-ms-linear-gradient(bottom,#33CC00,#66FF22);}.hr,.vr{position:absolute;background:#3300FF;}.hr{height:1px;width:100%; /*⽔平线*/left:0;top:60px;}.vr{width:1px;height:100%; /*垂直线*/left:60px;top:0;}</style>JS代码:⾸先引⼊在线API:复制代码代码如下:<script src="https:///ajax/libs/jquery/1.7.1/jquery.min.js"></script>实现动画代码(相当简洁):复制代码代码如下:<script>$(function(){var rot=0;var prefix=$('.tire').css('-o-transform')?'-o-transform':($('.tire').css('-ms-transform')?'-ms-transform':($('.tire').css('-moz-transform')?'-moz-transform':($('.tire').css('-webkit-transform')?'-webkit-transform':'transform')));var origin={ /*设置我们的起始点*/left:-400};var animation={ /*该动画由jQuery执⾏*/left:1600 /*设置我们将移动到的最终位置*/};var rotate=function(){ /*该⽅法将被旋转的轮⼦调⽤*/rot+=2;$('.tire').css(prefix,'rotate('+rot+'deg)');};var options={ /*将要被jQuery使⽤的参数*/easing:'linear', /*指定速度,此处只是线性,即为匀速*/duration:10000, /*指定动画持续时间*/complete:function(){$('#car').css(origin).animate(animation,options);},step:rotate};plete();});</script>简单讲解:prefix⾸先识别出当前是哪个定义被采⽤了(-o?-moz?-webkit?-ms?),然后定义了动画的起点位置和终点位置。
HTML5canvas绘制的玫瑰花效果
HTML5canvas绘制的玫瑰花效果有⼈⽤html就写了⼀朵漂亮的玫瑰,是不是有点太骚⽓了。
纯javascipt就弄出了玫瑰花,再次显⽰了HTML5的威⼒警告:传说IE6内核是⽆法看到的,建议⽤Chrome或者Firefox。
玫瑰花效果:实现代码:复制代码代码如下:<!doctype html><html><head><title>Love</title><meta charset="utf-8" /><!--[if IE]><script src="/svn/trunk/html5.js"></script><![endif]--></head><body><canvas id="c"></canvas><script>var b = document.body;var c = document.getElementsByTagName('canvas')[0];var a = c.getContext('2d');document.body.clientWidth;</script><script>// start of submission //with (m = Math) C = cos, S = sin, P = pow, R = random; c.width = c.height = f = 500; h = -250; function p(a, b, c) { if (c > 60) return [S(a * 7) * (13 + 5 / (.2 + P(b * 4, 4))) - S(b) * 50, b * f + 50, 625 + C(a * 7) * (13 + 5 / (.2 + P(b * 4, 4))) + b * 400, a * 1 - b / 2, a]; A = a * 2 - 1; B = b * 2 - 1; if (A * A + B * B < 1) { if (c > 37) { n = (j = c & 1) ? 6 : 4; o = .5 / (a + .01) + C(b * 125) * 3 - a * 300; w = b * h; return [o * C(n) + w * S(n) + j * 610 - 390, o * S(n) - w * C(n) + 550 - j * 350, 1180 + C(B + A) * 99 - j * 300, .4 - a * .1 + P(1 - B * B, -h * 6) * .15 - a * b * .4 + C(a + b) / 5 + P(C((o * (a + 1) + (B > 0 ? w : -w)) / 25), 30) * .1 * (1 - B * B), o / 1e3 + .7 -o * w * 3e-6] } if (c > 32) { c = c * 1.16 - .15; o = a * 45 - 20; w = b * b * h; z = o * S(c) + w * C(c) + 620; return [o * C(c) - w * S(c), 28 + C(B * .5) * 99 - b * b * b * 60 - z / 2 - h, z, (b * b * .3 + P((1 - (A * A)), 7) * .15 + .3) * b, b * .7] } o = A * (2 - b) * (80 - c * 2); w = 99 - C(A) * 120 - C(b) * (-h - c * 4.9) + C(P(1 - b, 7)) * 50 + c * 2; z = o * S(c) + w * C(c) + 700; return [o * C(c) - w * S(c), B * 99 -C(P(b, 7)) * 50 - c / 3 - z / 1.35 + 450, z, (1 - b / 1.2) * .9 + a * .1, P((1 - b), 20) / 4 + .05] } }setInterval('for(i=0;i<1e4;i++)if(s=p(R(),R(),i%46/.74)){z=s[2];x=~~(s[0]*f/z-h);y=~~(s[1]*f/z-h);if(!m[q=y*f+x]|m[q]>z)m[q]=z,a.fillStyle="rgb("+~(s[3]*h)+","+~(s[4]*h)+","+~(s[3]*s[3]*-80)+")",a.fillRect(x,y,1,1)}', 0)// end of submission //</script></body></html>。
使用Canvas实现图形编辑与操作功能
使用Canvas实现图形编辑与操作功能Canvas是一个HTML5的元素,它可以用来在网页上绘制图形,包括线条、填充颜色和渐变色、文字等。
通过对Canvas的操作,我们可以实现丰富的图形编辑和操作功能,为用户提供更好的视觉体验。
一、绘制基本图形在Canvas中,我们可以使用诸如fillRect、strokeRect等方法来绘制基本的图形,比如矩形。
通过指定矩形的位置、宽度和高度,我们可以在Canvas上绘制出一个矩形,并选择填充颜色或边框的颜色。
除了矩形,我们还可以使用诸如绘制圆形、直线、多边形等方法来实现更多的图形绘制。
通过指定对应的参数,我们可以绘制出各种形状的图形,并对其进行填充或描边。
二、图形变换与动画效果Canvas还提供了图形变换的功能,通过使用translate、rotate和scale等方法,我们可以实现平移、旋转和缩放等效果。
例如,我们可以将一个矩形图形做平移后,再进行旋转和缩放,从而实现复杂的图形变换效果。
除了图形变换,Canvas还可以用来实现图形的动画效果。
通过使用setInterval或requestAnimationFrame等方法,我们可以定时调用绘制图形的函数,从而实现图形的动态变化。
例如,我们可以让一个圆形在Canvas上做往返运动,给用户带来生动而有趣的视觉体验。
三、实现图形编辑功能Canvas不仅可以用于绘制图形,还可以用于实现图形编辑的功能。
比如,我们可以使用鼠标事件来实现图形的选择和拖动功能。
通过监听鼠标的mousedown、mousemove和mouseup事件,我们可以实现在Canvas上选择一个图形并进行拖动的效果。
除了选择和拖动,我们还可以使用鼠标事件来实现图形的缩放和旋转功能。
通过计算鼠标的滚轮事件或拖动事件的距离,我们可以对选中的图形进行缩放或旋转的操作,实现图形的形变效果。
四、实现图像编辑功能除了图形,Canvas还可以用于图像的编辑和操作。
HTML5在canvas中绘制矩形附效果图
HTML5在canvas中绘制矩形附效果图⼀、绘制矩形canvas使⽤原点(0,0)在左上⾓的坐标系统,x坐标向右递增,y坐标向下递增。
使⽤绘图环境的矩形绘制函数来绘制矩形。
fillRect(x,y,width,height) :绘制⼀个实⼼的矩形。
strokeRect(x,y,width,height) :绘制⼀个空⼼的矩形。
clearRect(x,y,width,height) :清除指定的矩形区域,使之完全透明。
⼆、在canvas中绘制矩形复制代码代码如下:<!--<!DOCTYPE> 声明必须是 HTML ⽂档的第⼀⾏,位于 <html> 标签之前。
--><!DOCTYPE html><html><head><meta http-equiv="Content-type" content="text/html; charset = utf-8"><title>HTML5</title><script type="text/javascript" charset = "utf-8">//这个函数将在页⾯完全加载后调⽤function pageLoaded(){//获取canvas对象的引⽤,注意tCanvas名字必须和下⾯body⾥⾯的id相同var canvas = document.getElementById('tCanvas');//获取该canvas的2D绘图环境var context = canvas.getContext('2d');//绘制代码将出现在这⾥//实⼼矩形//在点(200,10)处绘制⼀个宽和⾼均为100像素的实⼼正⽅形context.fillRect(200,10,100,100);//在点(50,70)处绘制⼀个宽90像素、⾼30像素的实⼼矩形context.fillRect(50,70,90,30);//空⼼矩形(矩形边框)//在点(110,10)处绘制⼀个宽和⾼均为50像素的正⽅形边框context.strokeRect(110,10,50,50);//在点(30,10)处绘制⼀个宽和⾼均为50像素的正⽅形边框context.strokeRect(30,10,50,50);//清除矩形区域//清除点(210,20)处宽30像素、⾼20像素的矩形区域context.clearRect(210,20,30,20);//清除点(260,20)处宽30像素、⾼20像素的矩形区域context.clearRect(260,20,30,20);}</script></head><body onload="pageLoaded();"><canvas width = "400" height = "200" id = "tCanvas" style = "border:black 1px solid;"><!--如果浏览器不⽀持则显⽰如下字体-->提⽰:你的浏览器不⽀持<canvas>标签</canvas></body></html>三、绘制效果。
canvas优秀案例
canvas优秀案例Canvas是HTML5中的一个标签,可以用于绘制图形、动画、游戏等。
它提供了丰富的API,可以实现各种复杂的效果。
下面是一些优秀的Canvas案例,展示了Canvas的强大功能和创造力。
1. 粒子效果:这个案例使用Canvas绘制了许多小球,它们在屏幕上随机运动,并且会发生碰撞和反弹。
这种粒子效果可以用于创建炫酷的背景或特效。
2. 时钟动画:这个案例使用Canvas绘制了一个时钟,指针会根据当前时间进行旋转。
通过改变指针的颜色、形状和动画效果,可以创建出各种不同风格的时钟。
3. 3D效果:Canvas可以实现3D效果,可以用于创建立体的图形和场景。
这个案例展示了一个旋转的立方体,通过改变视角和投影矩阵,可以实现各种复杂的3D效果。
4. 碰撞检测:Canvas可以检测两个物体是否发生碰撞,这个案例展示了一个简单的碰撞检测游戏。
玩家需要控制一个小球,避开障碍物并收集道具,通过碰撞检测判断游戏是否结束。
5. 图片处理:Canvas可以对图片进行处理,包括缩放、旋转、裁剪等操作。
这个案例展示了一个简单的图片编辑器,用户可以通过拖动滑块来改变图片的亮度、对比度和饱和度。
6. 轨迹动画:Canvas可以绘制路径,并在路径上运动。
这个案例展示了一个小球在预先定义的路径上运动,通过改变路径的形状和曲线,可以创建出各种复杂的轨迹动画。
7. 粒子轨迹:这个案例使用Canvas绘制了许多小球,它们在屏幕上随机运动,并且会留下轨迹。
通过改变小球的颜色和大小,可以创建出各种炫酷的粒子轨迹效果。
8. 游戏开发:Canvas可以用于创建各种类型的游戏,包括平台游戏、射击游戏、益智游戏等。
这个案例展示了一个简单的打砖块游戏,玩家需要控制一个板子来接住小球并打破砖块。
9. 数据可视化:Canvas可以用于可视化数据,包括绘制图表、地图等。
这个案例展示了一个简单的柱状图,通过改变数据和颜色,可以创建出各种不同类型的图表。
第6章 HTML5的canvas绘图
矩阵乘法是这样定义的:假设有两个矩阵A和B ,如果要通过A*B得到C,那么矩阵A的列数必 须与矩阵B的行数相同,方才能进行运算。得到 的新的矩阵的第 i 行 ,第 j 列的值 就是A的第 i 行 与 B 的第 j 列相对应的值相乘,然后相加的 结果。
HTML5+CSS3 Web 前端开发技术
6.6 在canvas中使用图像
首先,我们来看看图形在画布上的移动。 算法很简单:
X’ = X + a
Y’ = Y + b
这样就把点(X,Y)移动到了(X’,Y’)。
对应的变换的矩阵就是
X’ 1 0 a
X
Y’ = 0 1 b * Y
1
001
1
X’ = 1*X + 0*Y + a*1;
这个方法只接受一个参数:旋转的角度(angle),它是顺时针方向的,以弧度为单位的值
HTMLc5t+xC.rSoSt3aWtee(ba前n端g开le发);技术
6.5 使用坐标变换和矩阵变换绘图
示例6-15(script15.js)中使用坐标变换方法绘制了一组变形图形。
HTML5+CSS3 Web 前端开发技术
交汇处的拐角形状
角
round:创建圆角拐角
bevel:创建斜角拐角
HTML5+CSS3 Web 前端开发技术
6.3 使用路径绘制图形
示例6-8(script08.js)绘制了宽度从2像素到10像素不等的5 条直线。
HTML5+CSS3 Web 前端开发技术
6.3 使用路径绘制图形
6-9 (script09.js)示例中先用数组保存butt、round、square三种线 条端点属性值,然后使用循环访问数组元素,为每条直线添加不同端点。
canvas使用方法
canvas使用方法Canvas是HTML5中的一个标签,可以用来在Web页面上绘制2D 和3D图形。
在使用Canvas之前,需要先通过JavaScript引用Canvas 对象,然后使用Canvas提供的API来进行绘图。
下面是Canvas的基本使用方法:一、创建Canvas1. 在HTML文件中添加Canvas标签:```<canvas id='myCanvas'></canvas>```2. 通过JavaScript引用Canvas对象:```var canvas = document.getElementById('myCanvas');```3. 设置Canvas的宽度和高度:```canvas.width = 800; // 设置Canvas宽度为800pxcanvas.height = 600; // 设置Canvas高度为600px```二、绘制基本图形1. 通过getContext()方法获取绘图上下文:```var ctx = canvas.getContext('2d');```2. 使用绘图上下文提供的API来绘制基本图形,例如:```// 绘制矩形ctx.fillStyle = 'red'; // 设置填充颜色为红色ctx.fillRect(50, 50, 100, 100); // 绘制一个左上角坐标为(50,50),宽度为100,高度为100的矩形// 绘制圆形ctx.beginPath(); // 开始绘制路径ctx.arc(200, 200, 50, 0, 2*Math.PI); // 绘制一个圆心坐标为(200,200),半径为50的圆形ctx.fillStyle = 'blue'; // 设置填充颜色为蓝色ctx.fill(); // 填充路径```三、绘制文本1. 使用绘图上下文的API来绘制文本,例如:```ctx.font = '30px Arial'; // 设置字体样式ctx.fillStyle = 'green'; // 设置填充颜色为绿色ctx.fillText('Hello World', 400, 300); // 绘制文本“Hello World”,左上角坐标为(400,300)```四、动画效果1. 使用setInterval()方法来实现动画效果,例如:```setInterval(function() {// 在此处更新Canvas中的图形}, 1000/60); // 每秒更新60次```以上就是Canvas的基本使用方法,可以根据实际需求来绘制各种复杂的图形和动画效果。
HTML5画布(Canvas)技术效果演示:可撕扯的网布
HTML5画布(Canvas)技术效果演示:可撕扯的网布你对颜色敏感吗?过不了16关就不要再玩手机了!测测你的眼睛对色差的辨识度,所有的色块中有一个方块的颜色有稍微的不同,你要把它挑出来,在一分钟的时间里,看你能获得多少分,16分以下不要再玩手机了!趣味游戏:请画一个小人请随意画出一个小人,它就能活起来,你可以和它一起完成一次充满奇幻色彩的冒险旅程。
HTML5旋转拼图智力游戏这是一个HTML5 jQuery 益智游戏,玩家需要调换图形的位置来实现目标图案。
动画展示计算机迷宫路径各种搜索算法十分形象的迷宫搜索算法,能看的计算机如何一步一步的探索路径,障碍物,最终确定最佳,最近的路线图中文版濒危动物CSS碎片拼图这里我们用纯CSS技术表现出30种动物的碎片拼图形象,这30动物,非常的可爱,但不幸的是,它们都是濒临灭绝的动物,它们的生存情况正面临着危机。
HTML5小游戏:蓝色拼图这是一个用HTML5制作的智力游戏,有相当的难度。
每个方块一面橙色,一面蓝色。
点击一个方块,这个方块的颜色会翻转,并且,与它邻接的方块的颜色也会翻转。
使拼板全部变成蓝色,你就算过关了。
CSS颜色混合模式虽然并不是Adobe的Photoshop发明了混合模式,但它的实现效果是最真实的。
但现在,你不需要使用Photoshop来运用混合模式美化你的图片,因为CSS3里提供里动态的实现这种效果的方法。
你能相信吗?这些都是由一个DIV元素实现的动画,纯CSS3技术CSS3给Web程序员提供了无限发挥的创造空间,以前只有视频、Flash、JavaScript才能实现的动画效果,如今只需要纯CSS+HTML 就能做到。
你能相信吗?这里呈现的所有动画,都是由一个DIV元素实现,纯CSS3技术。
HTML5+CSS3特效幻灯片(impress.js)HTML5和CSS3的诞生和普及必将对传统行业带来巨大的冲击,像微软PPT这样的软件必将慢慢转移的在线的HTML5+CSS3上,因为用HTML5+CSS3实现幻灯片不仅更简单、容易,而且功能更强调,特效更绚丽。
html5canvas半圆环百分比进度条动画特效
html5canvas半圆环百分⽐进度条动画特效<!DOCTYPE html><html><head><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" /><meta http-equiv="content-type" content="text/html;charset=utf-8" /><title>动态画⼀半圆环</title></head><body><div class="ring" style="text-align: center;"><canvas id="tutorial" width="125" height="125"></canvas><div class="fraction"><span class="numberOne">95</span></div><span class="title">半圆环</span></div><script>let radius = 60; //外环半径let thickness = 10; //圆环厚度let innerRadius = radius - thickness; //内环半径let startAngle = -90; //开始⾓度let endAngle = 180; //结束⾓度let x = 0; //圆⼼x坐标let y = 0; //圆⼼y坐标let canvas = document.getElementById("tutorial");canvas.width = 125;canvas.height = 125;let ctx = canvas.getContext("2d");ctx.translate(canvas.width / 2, canvas.height / 2); //将绘图原点移到画布中央ctx.rotate(angle2Radian(225)); //将画布旋转225度ctx.fillStyle = "#eee"; //初始填充颜⾊renderRing(startAngle, endAngle);//渲染函数function renderRing(startAngle, endAngle) {ctx.beginPath();//绘制外环ctx.arc(x, y, radius, angle2Radian(startAngle), angle2Radian(endAngle));//计算外环与内环第⼀个连接处的中⼼坐标let oneCtrlPoint = calcRingPoint(x,y,innerRadius + thickness / 2,endAngle);//绘制外环与内环第⼀个连接处的圆环ctx.arc(oneCtrlPoint.x,oneCtrlPoint.y,thickness / 2,angle2Radian(-90),angle2Radian(270));// //绘制内环ctx.arc(x,y,innerRadius,angle2Radian(endAngle),angle2Radian(startAngle),true);//计算外环与内环第⼆个连接处的中⼼坐标let twoCtrlPoint = calcRingPoint(x,y,innerRadius + thickness / 2,startAngle);//绘制外环与内环第⼆个连接处的圆环ctx.arc(twoCtrlPoint.x,twoCtrlPoint.y,thickness / 2,angle2Radian(-90),angle2Radian(270));ctx.fill();// ctx.stroke()}//计算圆环上点的坐标function calcRingPoint(x, y, radius, angle) {let res = {};res.x = x + radius * Math.cos((angle * Math.PI) / 180);res.y = y + radius * Math.sin((angle * Math.PI) / 180);return res;}//弧度转⾓度function radian2Angle(radian) {return (180 * radian) / Math.PI;}//⾓度转弧度function angle2Radian(angle) {return (angle * Math.PI) / 180;}//进度条颜⾊var lingrad = ctx.createLinearGradient(0, 0, 150, 0);lingrad.addColorStop(0, "#00ABEB");lingrad.addColorStop(1, "#fff");ctx.fillStyle = lingrad;//开始绘画let tempAngle = startAngle;let total = 1000; //总分let now = 950; //当前分数let percent = now / total; //百分⽐let twoEndAngle = percent * 270 + startAngle;let step = (twoEndAngle - startAngle) / 80;let numberSpan = document.querySelector(".numberOne");let inter = setInterval(() => {if (tempAngle > twoEndAngle) {clearInterval(inter);} else {numberSpan.innerText = percent * 100;tempAngle += step;}renderRing(startAngle, tempAngle);}, 20);</script></body></html>vue中使⽤圆环可以直接使⽤element-ui组件库 elementui地址:https:///#/zh-CN/component/progress。
WEB前端第六十八课——H5新特性:Canvas案例(刮刮乐、小球动画,图片无缝滚动)
WEB前端第六⼗⼋课——H5新特性:Canvas案例(刮刮乐、⼩球动画,图⽚⽆缝滚动)1.刮刮乐 案例⽬标:利⽤canvas绑定事件,模拟简单刮刮乐程序。
案例思路:在canvas画布上引⼊是否中奖背景图⽚,然后在图⽚上覆盖涂层,当⿏标点击 并移动时擦出路径上的涂层,显⽰中奖信息。
主要事件:onload,onmousedown,onmousemove,onmouseup 代码⽰例:<html lang="en"><head><meta charset="UTF-8"><title>Canvas7刮刮乐</title></head><body><canvas id="canvas7" width="520" height="780">"您的浏览器不⽀持Canvas!"</canvas><script>var canvas=document.getElementById('canvas7');var ctx=canvas.getContext('2d');var imageArr=['../Images/rotation01.jpg','../Images/rotation02.jpg','../Images/rotation03.jpg'];var imgObj={};var flag=0;for (var i=0;i<imageArr.length;i++){var img=new Image();img.src=imageArr[i];imgObj[i]=img;img.onload=function () {flag++ //确保待图⽚全部加载完成后调⽤“lottery()”⽅法。
16个非常有趣的HTML5Canvas动画特效集合
16个非常有趣的HTML5Canvas动画特效集合HTML5技术正在不断的发展和更新,越来越多的开发者也正在加入HTML5阵营,甚至在移动开发上HTML5的地位也是越来越重要了。
HTML5中的大部分动画都是通过Canvas实现,因为Canvas就像一块画布,我们可以通过调用脚本在Canvas上绘制任意形状,甚至是制作动画。
本文就是收集了很多非常富有创意的一些canvas动画特效例子,这些例子都非常适合大家学习。
1、HTML5 Canvas高空瀑布下落湖面动画HTML5 Canvas是一个神奇的网页技术,我们在Canvas画布上可以做任何有趣的事情。
今天要分享的这款瀑布动画就是利用了HTML5 Canvas的相关特性实现的。
记得我们在很早以前给大家介绍过一个超逼真的HTML5瀑布动画,也是在Canvas上完成的,非常酷。
今天的这个瀑布更加美妙,因为它模拟了整个瀑布落入湖面的美妙景象,但是从逼真度上来说,还是稍微有待改进,不过个人觉得已经非常不错了。
在线演示源码下载2、HTML5/CSS3 3D雷达扫描动画之前我们分享过一款纯CSS3雷达扫描模拟动画,看起来十分炫酷。
这次我们分享的另外一款雷达动画更加让人震撼,它是基于HTML5和CSS3实现,它的一大特点是3D立体的视觉效果,鼠标点击雷达后将会展现一张3D立体地图,并且对地图上指定的几个地点进行坐标详细信息描述。
在线演示源码下载3、HTML5 Canvas 图片粒子沙漏动画之前我们分享过很多款炫酷的HTML5 Canvas粒子动画,比如这款HTML5 Canvas 多种炫酷3D粒子图形动画和HTML5 Canvas文字粒子动画就都非常不错。
这次我们要给大家带来的是一款基于HTML5 Canvas的图片粒子沙漏动画,主要是将一张图片打散成粒子,然后模拟沙漏将图片粒子掉落下来。
在线演示源码下载4、HTML5 Canvas火焰文字动画特效HTML5技术确实挺强大的,特别是Canvas画布更是让网页动画变得丰富多彩。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
HTML5Canvas动画效果演示
主要思想:
首先要准备一张有连续帧的图片,然后利用HTML5 Canvas的draw方法在不同的时间
间隔绘制不同的帧,这样看起来就像动画在播放。
关键技术点:
JavaScript函数setTimeout()有两个参数,第一个是参数可以传递一个JavaScript方法,
另外一个参数代表间隔时间,单位为毫秒数。
代码示例:setTimeout( update, 1000/30);
Canvas的API-drawImage()方法,需要指定全部9个参数:
ctx.drawImage(myImage, offw, offh, width,height, x2, y2, width, height);
其中offw, offh是指源图像的起始坐标点,width, height表示源图像的宽与高,x2,y2表
示源图像在目标Canvas上的起始坐标点。
一个22帧的大雁飞行图片实现的效果:
源图像:
程序代码:
[javascript]view plain copy
1.<!DOCTYPE html>
2.<html>
3.<head>
4.<meta http-equiv="X-UA-Compatible" content="chrome=IE8">
5.<meta http-equiv="Content-type" content="text/html;charset=UTF-8">
6.<title>Canvas Mouse Event Demo</title>
7.<link href="default.css" rel="stylesheet" />
8. <script>
9.var ctx = null; // global variable 2d context
10.var started = false;
11.var mText_canvas = null;
12.var x = 0, y =0;
13.var frame = 0; // 22 5*5 + 2
14.var imageReady = false;
15.var myImage = null;
16.var px = 300;
17.var py = 300;
18.var x2 = 300;
19.var y2 = 0;
20. window.onload = function() {
21.var canvas = document.getElementById("animation_canvas");
22. console.log(canvas.parentNode.clientWidth);
23. canvas.width = canvas.parentNode.clientWidth;
24. canvas.height = canvas.parentNode.clientHeight;
25.
26.if (!canvas.getContext) {
27. console.log("Canvas not supported. Please install a HTML5 co
mpatible browser.");
28.return;
29. }
30.
31.// get 2D context of canvas and draw rectangel
32. ctx = canvas.getContext("2d");
33. ctx.fillStyle="black";
34. ctx.fillRect(0, 0, canvas.width, canvas.height);
35. myImage = document.createElement('img');
36. myImage.src = "../robin.png";
37. myImage.onload = loaded();
38. }
39.
40.function loaded() {
41. imageReady = true;
42. setTimeout( update, 1000/30);
43. }
44.
45.function redraw() {
46. ctx.clearRect(0, 0, 460, 460)
47. ctx.fillStyle="black";
48. ctx.fillRect(0, 0, 460, 460);
49.
50.// find the index of frames in image
51.var height = myImage.naturalHeight/5;
52.var width = myImage.naturalWidth/5;
53.var row = Math.floor(frame / 5);
54.var col = frame - row * 5;
55.var offw = col * width;
56.var offh = row * height;
57.
58.// first robin
59. px = px - 5;
60. py = py - 5;
61.if(px < -50) {
62. px = 300;
63. }
64.if(py < -50) {
65. py = 300;
66. }
67.
68.//var rate = (frame+1) /22;
69.//var rw = Math.floor(rate * width);
70.//var rh = Math.floor(rate * height);
71. ctx.drawImage(myImage, offw, offh, width, height, px, py, width,
height);
72.
73.// second robin
74. x2 = x2 - 5;
75. y2 = y2 + 5;
76.if(x2 < -50) {
77. x2 = 300;
78. y2 = 0;
79. }
80. ctx.drawImage(myImage, offw, offh, width, height, x2, y2, width,
height);
81.
82. }
83.
84.function update() {
85. redraw();
86. frame++;
87.if (frame >= 22) frame = 0;
88. setTimeout( update, 1000/30);
89. }
90.
91. </script>
92.</head>
93.<body>
94. <h1>HTML Canvas Animations Demo - By Gloomy Fish</h1>
95. <pre>Play Animations</pre>
96. <div id="my_painter">
97. <canvas id="animation_canvas"></canvas>
98. </div>
99.</body>
100.</html>
发现上传透明PNG格式有点问题,所以我上传
不透明的图片。
可以用其它图片替换,替换以后请修改最大帧数从22到你的实际帧数即可运行。