HTML5和CSS3為動畫效果的實現提供了更多的可能性。其中,HTML5中的Canvas為實現2D動畫提供了基礎,它是一個基于JavaScript的HTML標簽,提供了繪制圖形、文本、圖像等的功能。而CSS3中的動畫效果則是基于CSS的樣式調整實現的。
HTML5中的Canvas可以通過JavaScript實現2D動畫效果,方法是使用Canvas繪制圖形并不斷地重新繪制,實現圖形的動態變化。下面是一個使用HTML5 Canvas實現的2D動畫效果的代碼:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Canvas動畫效果</title> </head> <body> <canvas id="myCanvas"></canvas> <script> var canvas = document.getElementById("myCanvas"); var context = canvas.getContext("2d"); var x = canvas.width / 2; var y = canvas.height / 2; var radius = 75; var startAngle = 0; var endAngle = 2 * Math.PI; var counterClockwise = false; function draw () { context.beginPath(); context.arc(x, y, radius, startAngle, endAngle, counterClockwise); context.lineWidth = 15; //顏色漸變 var gradient = context.createRadialGradient(x, y, radius - 15, x, y, radius); gradient.addColorStop(0, 'blue'); gradient.addColorStop(1, 'white'); context.strokeStyle = gradient; context.stroke(); requestAnimationFrame(draw); } draw(); </script> </body> </html>
上述代碼中,Canvas元素的width屬性和height屬性用來設置Canvas的寬度和高度。腳本中的getContext()方法可以獲得一個繪制上下文對象,使用該對象可以實現圖形、文本、圖像等的繪制和變換操作。
下面是使用CSS3實現的一個2D動畫效果,其中使用了CSS3中的transition和transform屬性:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>CSS3動畫效果</title> </head> <style> .box { width: 100px; height: 100px; background: blue; position: relative; transition: all 1s ease-in-out; transform: rotate(0deg); } .box:hover { background: red; transform: rotate(360deg); } </style> <body> <div class="box"></div> </body> </html>
上述代碼中,transition屬性定義了元素效果的過渡效果、持續時間和速度曲線。transform屬性實現元素的旋轉,將旋轉角度設置為360度,當鼠標懸停在元素上時,元素背景即由藍色漸變為紅色,并帶有旋轉效果。