当前位置:首页 > 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圆:

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样式:

#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实现动态画圆

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

相关文章

vue实现js休眠

vue实现js休眠

Vue 中实现 JavaScript 休眠 在 Vue 中实现 JavaScript 休眠通常需要使用异步方式,以避免阻塞主线程。以下是几种常见方法: 使用 setTimeout 和 Pro…

vue动态实现select

vue动态实现select

vue动态实现select的方法 使用v-for动态渲染选项 通过v-for指令可以动态生成select的option选项。将选项数据存储在data中,利用v-for遍历数据生成下拉列表。 <…

动态路由的实现vue

动态路由的实现vue

动态路由的实现(Vue) 在Vue中实现动态路由通常涉及以下方法: 基于路由参数(params) 在路由配置中使用动态片段(以冒号开头),例如: const routes = [ { pa…

js实现拖拽

js实现拖拽

实现拖拽的基本步骤 通过监听鼠标事件(mousedown、mousemove、mouseup)实现拖拽功能。以下是核心代码逻辑: const draggableElement = document…

js实现复制

js实现复制

使用document.execCommand方法 在较旧的浏览器中,可以使用document.execCommand('copy')实现复制功能。创建一个临时的textarea或input元素,将需要…

原生js实现轮播图

原生js实现轮播图

基本结构搭建 HTML部分需要包含轮播图容器、图片列表及导航按钮。结构示例如下: <div class="slider-container"> <div class="slid…