使用canvas的图像变换实现展开卡片的动画效果在 photo.html 文件中添加 <canvas> 标签。 添加 <script> 标签,并在其中编写 JavaScript 代码。首先定义 anim() 函数,在其中实现动画效果,即使用 requestAnimationFrame() 方法来定时运行动画,累计旋转角度和缩放系数,再分别调用 rotate() 方法和scale() 方法实现图像的旋转和缩放。然后在画布上加载图像,使用translate() 方法平移旋转原点的位置,最后调用 anim() 函数。
时间: 2024-03-25 11:41:06 浏览: 17
HTML部分:
```
<canvas id="card" width="500" height="500"></canvas>
```
JavaScript部分:
```
var canvas = document.getElementById('card');
var ctx = canvas.getContext('2d');
var img = new Image();
img.src = 'card.jpg';
img.onload = function() {
ctx.drawImage(img, 0, 0, 500, 500);
anim();
}
var angle = 0;
var scale = 1;
var translateX = 0;
var translateY = 0;
function anim() {
ctx.clearRect(0, 0, canvas.width, canvas.height);
ctx.save();
// 平移旋转原点的位置
ctx.translate(canvas.width / 2 + translateX, canvas.height / 2 + translateY);
// 旋转图像
ctx.rotate(angle);
// 缩放图像
ctx.scale(scale, scale);
// 绘制图像
ctx.drawImage(img, -canvas.width / 2, -canvas.height / 2, canvas.width, canvas.height);
ctx.restore();
// 累计旋转角度和缩放系数
angle += Math.PI / 180;
scale += 0.01;
// 定时运行动画
requestAnimationFrame(anim);
}
```
该示例中使用了一张名为 card.jpg 的图片作为卡片的背景图像,需要将图片放置在与HTML文件同一目录下。anim() 函数中使用 translate() 方法将旋转原点的位置平移到画布中心,然后调用 rotate() 方法和scale() 方法分别实现旋转和缩放效果,最后使用 drawImage() 方法绘制图像。通过累计旋转角度和缩放系数,并使用 requestAnimationFrame() 方法定时运行 anim() 函数,实现动画效果。