JavaScript可以通过改变元素的CSS属性或者使用定时器来控制动画效果。以下是几种控制动画的方法:
使用CSS动画可以通过改变元素的CSS属性来实现动画效果。CSS动画有以下几种方式:
/* 定义动画的关键帧 */ @keyframes example { 0% {left: 0px; top: 0px;} 25% {left: 200px; top: 0px;} 50% {left: 200px; top: 200px;} 75% {left: 0px; top: 200px;} 100% {left: 0px; top: 0px;} }/ 应用动画 / div { width: 100px; height: 100px; position: relative; animation-name: example; animation-duration: 4s; animation-iteration-count: infinite; }
使用JavaScript定时器可以通过改变元素的CSS属性来实现动画效果。以下是使用JavaScript定时器实现动画的示例:
var elem = document.getElementById("myAnimation"); var pos = 0; var id = setInterval(frame, 5); function frame() { if (pos == 350) { clearInterval(id); } else { pos++; elem.style.top = pos + 'px'; elem.style.left = pos + 'px'; } }
使用canvas元素可以通过绘制图形来实现动画效果。以下是使用canvas元素绘制图形的示例:
var canvas = document.getElementById("myCanvas"); var ctx = canvas.getContext("2d"); var x = canvas.width/2; var y = canvas.height-30; var dx = 2; var dy = -2;function drawBall() { ctx.beginPath(); ctx.arc(x, y, 10, 0, Math.PI*2); ctx.fillStyle = "#0095DD"; ctx.fill(); ctx.closePath(); }
function draw() { ctx.clearRect(0, 0, canvas.width, canvas.height); drawBall(); x += dx; y += dy; if(x + dx > canvas.width-10 || x + dx < 10) { dx = -dx; } if(y + dy > canvas.height-10 || y + dy < 10) { dy = -dy; } }
setInterval(draw, 10);