[SoOnPerson] HTML5 简单的动画
有了第一个粉丝呀!开心!
在学习动画的时候,有了一点小成果,开心,记录一下
不过不知道怎么能发动图,就不发结果了
文件 html5.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>动画</title> <script src="../../js/jquery.js"></script> <script src="../../js/html5.js"></script> <style> canvas { width: 19px; height: 9.3px; position:relative; background: linear-gradient( rgba(255,0,0,0.3), rgba(233, 219, 36, 0.3), rgba(255, 252, 60, 0.3), rgba(0,255,0,0.3), rgba(0,255,255,0.3), rgba(0,0,255,0.3), rgba(128,0,255,0.3)); transition: width 5s, height 5s, transform 5s; -webkit-transition: width 5s, height 5s, transform 5s; } canvas:hover { width:1900px; height: 930px; } </style> </head> <body onload="drawBackground();"> <canvas id="background_canvas"></canvas> </body> </html>
这个是边学边尝试做出来的
如果不想要背景慢慢放大,可以不设置canvas里面的height和width,删了就可以
background的颜色是彩虹的几个颜色:红橙黄绿青蓝紫,都设置了透明度,不然感觉不太好看
html5.js自己注意一下引用路径,还有要在前面引用jquery.js
//屏幕的高度 var sc_height = screen.availHeight-110; //屏幕的宽度 var sc_width = screen.availWidth-20; var Mouse_x = 0; var Mouse_y = 0; //获取鼠标坐标 function mouseMove(ev) { Ev= ev || window.event; var mousePos = mouseCoords(ev); Mouse_x = mousePos.x; Mouse_y = mousePos.y; } function mouseCoords(ev) { if(ev.pageX || ev.pageY){ return {x:ev.pageX, y:ev.pageY}; } return{ x:ev.clientX + document.body.scrollLeft - document.body.clientLeft, y:ev.clientY + document.body.scrollTop - document.body.clientTop }; } document.onmousemove = mouseMove; //设置背景 function drawBackground() { var cav = $("#background_canvas") ; //设置style里的宽高 cav.css({"height": sc_height, "width": sc_width, "margin": 0}); //设置属性宽高,这个不设置的话,图案会很模糊 cav.attr("width",sc_width); cav.attr("height",sc_height); var cv = document.getElementById("background_canvas"); var context = cv.getContext('2d'); drawCircle(context); } //画圆 function drawCircle(context) { var t =1 ; var i = 0 ; var circle_speed = 6; window.setInterval(function () { context.clearRect(0,0,sc_width,sc_height); context.beginPath(); //圆的边的宽度 context.lineWidth = 8; //圆的边的颜色 context.strokeStyle = 'red'; context.arc(Mouse_x-10, Mouse_y-10, 50, ((circle_speed*i)-10)*Math.PI/180, circle_speed*i*Math.PI/180); context.stroke(); i++; },t); }
屏幕的宽度,有点问题,自己调了一点
主要思想就是获取一下鼠标的坐标,然后,一直刷新画一定角度的圆
主要是
arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, anticlockwise?: boolean): void;开始的角度和结束的角度,我设置的相差了10度,然后每刷新一次,就角度加一点。要注意是角度,不是数字,所以取了Math.PI/180 这个是一度,相当于单位啦
大概就这么多啦,画圆,可以看前面几个文章,有详细点的解释。
大概就是这个一直在转圈圈,随着你的鼠标动。