如何用canvas用鼠标画直线画点线随鼠标移动的动画

当前位置:
css3动画按钮 (html)css3 点沿着线走的动画
猜你喜欢的文章
css3动画按钮最近更新
css3动画按钮 (html)css3 点沿着线走的动画
来源:网络整理&&&&&时间: 0:00:35&&&&&关键词:css3动画按钮
关于网友提出的“css3动画按钮 (html)css3 点沿着线走的动画”问题疑问,本网通过在网上对“css3动画按钮 (html)css3 点沿着线走的动画”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题:css3动画按钮 (html)css3 点沿着线走的动画
描述:我想实现的动画如下图所示,点沿着线从右往左走,用CSS3动画可以实现吗?或者说说思路,demo 都可以,谢谢了。解决方案1:用css3, svg, canvas都可以css3,使用animation,控制animation-duration和animation-delay,来显示每一段线的的动画svg,就简单很多,用ps导出一个svg文件,然后使用animation控制stroke-dashoffset, stroke-dasharraycanvas,就一段段path按顺序绘制吧,可能复杂点解决方案2:用svg比较简单,我写过几个关于svg的文章,可以参考一下解决方案3:css3可以实现,但是css3实现的是沿着边框border的动画,实现起来很复杂;我建议你用svg的路径动画,这个实现简单解决方案4:线段长度固定的话,算好距离用@keyframes分段控制一下横向和纵向移动就可以了随手写了一个简单的&style&
@keyframes move {
20%, 80% {
30%, 70% {
width: 300
height: 20
background-color: #f00;
border-radius: 50%;
animation: move 6
&div&&/div&
以上介绍了“css3动画按钮 (html)css3 点沿着线走的动画”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:/itwd/4452533.html
上一篇: 下一篇:
css3动画按钮相关图片
css3动画按钮相关文章canvas来画圆圈的动画效果特效,很炫哦。。。
以下是程序代码&body&
&canvas id=&myCanvas& width=&1200&
height=&300& style=&border:1px solid #333;&&
您的浏览器不支持canvas!
&button onclick=&actiondo()&&圆&/button&
var canvas = document.getElementById('myCanvas'),width = canvas.width,height = canvas.height,ctx = canvas.getContext('2d');
var step,startAngle,endAngle,add=Math.PI*2/100;
ctx.shadowOffsetX = 0; // 设置水平位移
ctx.shadowOffsetY = 0; // 设置垂直位移
ctx.shadowBlur = 10; // 设置模糊度
ctx.lineWidth = 1.0;
counterClockwise =
var animation_interval = 20,n = 100;
function actiondo(){
startAngle=0;
ctx.strokeStyle ='#'+('00000'+(Math.random()*0x).toString(16)).slice(-6);//圆圈颜色
ctx.shadowColor = '#'+('00000'+(Math.random()*0x).toString(16)).slice(-6); // 设置阴影颜色
//圆心位置
x=Math.floor(Math.random()*);
y=Math.floor(Math.random()*100+100);
radius = Math.floor(Math.random()*50+50);
varName= setInterval(animation, animation_interval);
var animation = function () {
if (step &= n) {
endAngle = startAngle +
drawArc(startAngle, endAngle);
startAngle = endA
clearInterval(varName);
function drawArc(s, e) {
ctx.beginPath();
ctx.arc(x, y, radius, s, e, counterClockwise);
ctx.lineWidth = 1.0;
ctx.stroke();
[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]
( 22:30:49)
相关排行总榜&!DOCTYPE html&
&meta charset="utf-8" /&
&meta http-equiv="X-UA-Compatible" content="IE=edge" /&
&title&canvas实现跟随鼠标旋转的箭头&/title&
*{padding: 0;margin: 0}
&canvas width="500" height="500" style="border: 1px solid #555; display:margin: 0"&&/canvas&
var arrow=function () {
this.color="#f90"
this.rolation=0;
var canvas=document.querySelector('canvas')
var ctx=canvas.getContext('2d');
arrow.prototype.draw=function (ctx) {
ctx.save();
ctx.translate(this.x,this.y);
ctx.rotate(this.rolation)
ctx.fillStyle=this.
ctx.beginPath();
ctx.moveTo(0, 15);
ctx.lineTo(-50, 15);
ctx.lineTo(-50, -15);
ctx.lineTo(0,-15);
ctx.lineTo(0,-35);
ctx.lineTo(50,0);
ctx.lineTo(0,35);
ctx.closePath()
ctx.fill();
ctx.restore();
var Arrow=new arrow();
Arrow.x=canvas.width/2;
Arrow.y=canvas.height/2;
var c_x,c_y; //相对于canvas坐标的位置;
var isMouseDown=false;
Arrow.draw(ctx)
canvas.addEventListener('mousedown',function(e) {
isMouseDown=true;
canvas.addEventListener('mousemove',function(e) {
if(isMouseDown==true){
c_x=getPos(e).x-canvas.offsetL
c_y=getPos(e).y-canvas.offsetT
//setInterval(drawFram,1000/60)
requestAnimationFrame(drawFram)
canvas.addEventListener('mouseup',function(e) {
isMouseDown=false;
function drawFram(){
var dx=c_x-Arrow.x;
var dy=c_y-Arrow.y;
Arrow.rolation=Math.atan2(dy,dx);
ctx.clearRect(0,0,canvas.width,canvas.height);
Arrow.draw(ctx)
function getPos(e) {
var mouse={x:0,y:0}
if(e.pageX||e.pageY){
mouse.x=e.pageX;
mouse.y=e.pageY;
mouse.x=e.pageX+document.body.scrollLeft+document.document.documentElement.scrollL
mouse.y=e.pageY+document.body.scrollTop+document.document.documentElement.scrollT
DEMO地址:
不废话,直接上DEMO了,这个效果实现起来并不复杂,但是麻雀随小,五脏俱全,主要涉及到的知识点有:
1、canvas的基本绘图;2、js各个事件的监听;3、js动画;4、三角函数结合js在canvas中的基本应用;
阅读(...) 评论()坦克大作战游戏中常见,点击某点,坦克的枪口会自动对准被点击的点!
window.onload = function() {
var canvas = document.getElementById("canvas");
var obj = canvas.getContext('2d');
obj.moveTo( 300, 500);
obj.lineTo( 300, 480);
obj.lineWidth = 6;
obj.strokeStyle = "#ff0000";
obj.stroke();
canvas.onmousedown = function( e ){
var mx = e.layerX;
var my = e.layerY;
var sx = 300;
var sy = 500;
var angle = Math.atan2( ( my - sy), ( mx - sx ) )
obj.clearRect(0, 0, 600, 600);
obj.beginPath();
obj.moveTo( sx, sy );
obj.lineTo( sx + 20 * Math.cos( angle ), sy + 20 * Math.sin(angle));
obj.stroke();
阅读(...) 评论()

我要回帖

更多关于 canvas 鼠标画多边形 的文章

 

随机推荐