当前位置:首页 > JavaScript

js实现动态画圆

2026-02-03 06:20:49JavaScript

使用Canvas绘制动态圆

在HTML中创建Canvas元素并获取其上下文:

<canvas id="myCanvas" width="400" height="400"></canvas>

JavaScript代码实现动态画圆:

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

let radius = 0;
const maxRadius = 100;
const centerX = canvas.width / 2;
const centerY = canvas.height / 2;

function drawCircle() {
    ctx.clearRect(0, 0, canvas.width, canvas.height);
    ctx.beginPath();
    ctx.arc(centerX, centerY, radius, 0, Math.PI * 2);
    ctx.strokeStyle = 'blue';
    ctx.lineWidth = 3;
    ctx.stroke();

    radius += 1;
    if (radius <= maxRadius) {
        requestAnimationFrame(drawCircle);
    }
}

drawCircle();

使用SVG实现动态圆

HTML中创建SVG容器:

<svg id="svgContainer" width="400" height="400"></svg>

JavaScript动态创建和动画SVG圆:

js实现动态画圆

const svg = document.getElementById('svgContainer');
const circle = document.createElementNS("http://www.w3.org/2000/svg", "circle");

let currentRadius = 0;
const maxRadius = 100;
const centerX = 200;
const centerY = 200;

circle.setAttribute('cx', centerX);
circle.setAttribute('cy', centerY);
circle.setAttribute('r', currentRadius);
circle.setAttribute('stroke', 'red');
circle.setAttribute('fill', 'none');
circle.setAttribute('stroke-width', '3');

svg.appendChild(circle);

function animateSVGCircle() {
    currentRadius += 1;
    circle.setAttribute('r', currentRadius);

    if (currentRadius < maxRadius) {
        requestAnimationFrame(animateSVGCircle);
    }
}

animateSVGCircle();

使用CSS动画结合JavaScript

HTML结构:

<div id="cssCircle"></div>

CSS样式:

js实现动态画圆

#cssCircle {
    width: 0;
    height: 0;
    border-radius: 50%;
    border: 3px solid green;
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
}

JavaScript控制动画:

const circle = document.getElementById('cssCircle');
let size = 0;
const maxSize = 200;

function growCircle() {
    size += 2;
    circle.style.width = size + 'px';
    circle.style.height = size + 'px';

    if (size < maxSize) {
        requestAnimationFrame(growCircle);
    }
}

growCircle();

使用GSAP库实现高级动画

引入GSAP库后:

gsap.to("#gsapCircle", {
    duration: 2,
    attr: {
        r: 100
    },
    ease: "bounce.out"
});

HTML结构:

<svg width="400" height="400">
    <circle id="gsapCircle" cx="200" cy="200" r="0" stroke="purple" stroke-width="3" fill="none"/>
</svg>

标签: 动态js
分享给朋友:

相关文章

vue实现动态隐藏

vue实现动态隐藏

动态隐藏的实现方法 在Vue中实现动态隐藏可以通过多种方式,常见的有条件渲染、动态绑定样式或类名。以下是几种具体实现方法: 使用v-if或v-show指令 <template> &…

js轮播图实现原理

js轮播图实现原理

轮播图的基本原理 轮播图通过动态切换显示的内容(图片、文本等)实现视觉上的滑动效果。核心原理是利用CSS和JavaScript控制元素的显示与隐藏,或通过变换位置实现滑动动画。 实现方法一:…

js实现报表

js实现报表

使用JavaScript实现报表 在JavaScript中实现报表功能可以通过多种方式完成,常见的方法包括使用原生JavaScript、第三方库(如Chart.js、D3.js)或结合后端数据渲染。以…

vue动态实现select

vue动态实现select

Vue 动态实现 Select 组件 在 Vue 中动态实现 Select 组件可以通过多种方式完成,以下介绍几种常见的方法: 使用 v-for 动态渲染选项 通过 v-for 指令可以动态渲染 s…

vue实现动态弧线

vue实现动态弧线

Vue 实现动态弧线的方法 动态弧线可以通过 SVG 或 Canvas 实现,以下是两种常见的方法: 使用 SVG 实现动态弧线 SVG 的 <path> 元素可以绘制弧线,结合…

js 实现图片轮播

js 实现图片轮播

基础实现方案 使用HTML、CSS和JavaScript创建一个简单的图片轮播。HTML部分定义轮播容器和图片,CSS负责样式布局,JavaScript处理轮播逻辑。 <div class="…