首页 > 其他分享 >使用canvas制作一个加载的动画

使用canvas制作一个加载的动画

时间:2024-12-27 09:31:34浏览次数:7  
标签:动画 canvas const ctx radius 加载

在前端开发中,使用HTML5的<canvas>元素可以创建丰富的图形和动画。下面是一个简单的示例,展示如何使用<canvas>制作一个加载动画。

首先,在HTML文件中添加一个<canvas>元素:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Loading Animation with Canvas</title>
    <style>
        body {
            display: flex;
            justify-content: center;
            align-items: center;
            height: 100vh;
            background-color: #f3f3f3;
        }
        canvas {
            border: 1px solid #000;
        }
    </style>
</head>
<body>
    <canvas id="loadingCanvas" width="200" height="200"></canvas>
    <script src="script.js"></script>
</body>
</html>

然后,在script.js文件中添加JavaScript代码来绘制加载动画:

const canvas = document.getElementById('loadingCanvas');
const ctx = canvas.getContext('2d');

let angle = 0;
const speed = 0.02;
const radius = 70;
const centerX = canvas.width / 2;
const centerY = canvas.height / 2;

function drawCircle(x, y, radius, color) {
    ctx.beginPath();
    ctx.arc(x, y, radius, 0, Math.PI * 2, false);
    ctx.fillStyle = color;
    ctx.fill();
    ctx.closePath();
}

function animate() {
    ctx.clearRect(0, 0, canvas.width, canvas.height); // 清除画布上的内容

    // 绘制外圈
    drawCircle(centerX, centerY, radius, '#eee');

    // 绘制加载部分
    ctx.beginPath();
    ctx.arc(centerX, centerY, radius, -0.5 * Math.PI, angle - 0.5 * Math.PI, false);
    ctx.lineWidth = 10;
    ctx.strokeStyle = '#3498db'; // 设置加载部分的颜色
    ctx.stroke(); // 绘制加载部分

    // 更新角度并检查是否完成一圈
    angle += speed;
    if (angle > Math.PI * 2) {
        angle = 0; // 如果完成一圈,则重置角度为0
    }

    requestAnimationFrame(animate); // 循环调用animate函数以持续动画效果
}

animate(); // 开始动画效果

这段代码创建了一个简单的加载动画,其中包含一个灰色的外圈和一个蓝色的加载部分。加载部分会随着时间的推移而逐渐增加,当完成一圈时,它会重新开始。你可以通过调整speed变量的值来控制加载速度,通过调整radius变量的值来控制圆圈的大小,以及通过修改ctx.strokeStyle的值来改变加载部分的颜色。

标签:动画,canvas,const,ctx,radius,加载
From: https://www.cnblogs.com/ai888/p/18634625

相关文章

  • JS如何判断css3动画结束?
    在前端开发中,如果你想通过JavaScript判断一个CSS3动画是否结束,有几种方法可以实现。以下是一些常见的方法:1.使用animationend事件CSS动画结束后,会触发一个名为animationend的事件。你可以监听这个事件来执行某些操作。varelement=document.getElementById('myElement');e......
  • 使用css3绘制一款动态的耳机音乐阶梯动画
    要使用CSS3创建一个动态的耳机音乐阶梯动画,你需要考虑几个关键部分:耳机形状的设计、音乐阶梯(可能是波形或频谱形式)的动画效果,以及两者的结合。下面是一个简单的步骤指南,帮助你开始这个项目:1.设计耳机形状你可以使用HTML和CSS来绘制耳机的形状。例如,你可以使用div元素和border-r......
  • 使用css制作一个网球弹跳的动画
    要创建一个网球弹跳的动画,你可以使用CSS的关键帧动画(@keyframes)。以下是一个简单的示例,展示了如何制作一个网球在地面上弹跳的动画:HTML结构:<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=de......
  • 【CSS in Depth 2 精译_095】16.3:深入理解 CSS 动画(animation)的性能
    当前内容所在位置(可进入专栏查看其他译好的章节内容)第五部分添加动效✔️【第16章变换】✔️16.1旋转、平移、缩放与倾斜16.1.1变换原点的更改16.1.2多重变换的设置16.1.3单个变换属性的设置16.2变换在动效中的应用16.2.1放大图标(上)16.2.2带......
  • 免杀0到1之ShellCode与加载器
    ShellCode本质:一段可以自主运行的代码。介绍:ShellCode没有任何文件结构,不依赖任何编译环境,无法像exe一样双击运行。需要通过控制程序流程跳转到shellcode地址加载上去执行shellcode。加载器介绍:一种将shellcode加载到目标进程内存中并执行的程序。它可以是独立的程序,也......
  • ArkWeb页面拦截与自定义响应 - 控制加载过程
    ArkWeb页面拦截与自定义响应-控制加载过程简介在Web应用开发中,有时我们需要对页面加载过程进行更精细的控制,比如拦截特定的请求并返回自定义的响应内容。ArkWeb框架提供了这样的能力,允许开发者拦截页面和资源加载请求,并自定义响应。本文将详细介绍如何使用ArkWeb框架实现这些......
  • quietflow.js-jquery背景层动画插件
    quietflow.js是一款可以制作炫酷页面背景层动画效果的jquery插件。该jquery插件内置了9种不同效果的背景层动画,你可以为页面轻松的添加背景动画效果。可用的背景层动画效果有:squareFlashvortexbouncingBallsshootingLinessimpleGradientstarfieldlayeredTrianglescorner......
  • Next.js 14 性能优化:从首屏加载到运行时优化的最佳实践
    在现代Web应用中,性能优化直接影响用户体验和业务转化。Next.js14提供了多种内置的性能优化特性,今天我们就来深入探讨如何充分利用这些特性,以及一些实用的优化技巧。图片和字体优化1.图片优化Next.js的Image组件供了强大的图片优化功能://components/OptimizedIm......
  • HTML画布canvas绘制图形,解决拖影问题
     在使用HTMl画面canvas绘制矩形,圆等图形时,总是出现拖影。解决这个问题有很多中方法:方法一:鼠标移动过程中中不画上去,在释放鼠标的时候绘制上去,这样就看不到拖影,但是看不到绘制过程方法二:在鼠标移动的时候,清除上一次绘制的矩形,然后在画,这样就没有拖影了,但是计算起来麻烦,要多......
  • 10种超酷波浪文字动画特效jquery插件
    这是一款超酷波浪文字动画特效jquery插件。该波浪文字动画插件中提供了10种不同的动画特效,它使用简单,效果非常的炫酷。 在线预览  下载  使用方法在页面中引入jquery、d.js和d.css文件。<scriptsrc="path/to/d.css"></script><scripttype="text/javascrip......