当前位置:首页 > JavaScript

js实现圆环

2026-02-01 00:33:18JavaScript

使用 SVG 实现圆环

SVG(Scalable Vector Graphics)是一种基于 XML 的矢量图形格式,适合绘制圆环等图形。

js实现圆环

<svg width="200" height="200">
  <circle cx="100" cy="100" r="80" fill="none" stroke="#3498db" stroke-width="10" />
</svg>
  • cxcy 定义圆心坐标
  • r 定义半径
  • fill 设置填充颜色(none 表示无填充)
  • stroke 设置边框颜色
  • stroke-width 设置边框宽度

使用 Canvas 实现圆环

Canvas 提供更灵活的绘制方式,适合需要动态效果的场景。

js实现圆环

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

ctx.beginPath();
ctx.arc(100, 100, 80, 0, 2 * Math.PI);
ctx.strokeStyle = '#e74c3c';
ctx.lineWidth = 10;
ctx.stroke();
  • arc() 方法绘制圆弧
  • 参数依次为:圆心 x, 圆心 y, 半径, 起始角度, 结束角度
  • strokeStyle 设置描边颜色
  • lineWidth 设置线宽

使用 CSS 实现圆环

纯 CSS 方案适合简单的静态圆环需求。

<div class="ring"></div>

<style>
.ring {
  width: 160px;
  height: 160px;
  border-radius: 50%;
  border: 10px solid #2ecc71;
  background: transparent;
}
</style>
  • border-radius: 50% 创建圆形
  • 透明背景配合边框形成圆环效果
  • 调整 border-width 控制圆环粗细

动态进度圆环实现

结合 Canvas 和 JavaScript 可以创建动态进度圆环。

function drawProgressRing(percent) {
  const canvas = document.getElementById('progressCanvas');
  const ctx = canvas.getContext('2d');
  const x = canvas.width / 2;
  const y = canvas.height / 2;
  const radius = 70;
  const lineWidth = 15;

  // 清除画布
  ctx.clearRect(0, 0, canvas.width, canvas.height);

  // 绘制背景圆环
  ctx.beginPath();
  ctx.arc(x, y, radius, 0, 2 * Math.PI);
  ctx.strokeStyle = '#ecf0f1';
  ctx.lineWidth = lineWidth;
  ctx.stroke();

  // 绘制进度圆环
  ctx.beginPath();
  ctx.arc(x, y, radius, -0.5 * Math.PI, (percent / 100) * 2 * Math.PI - 0.5 * Math.PI);
  ctx.strokeStyle = '#f39c12';
  ctx.lineWidth = lineWidth;
  ctx.lineCap = 'round';
  ctx.stroke();

  // 绘制百分比文本
  ctx.fillStyle = '#34495e';
  ctx.font = '24px Arial';
  ctx.textAlign = 'center';
  ctx.textBaseline = 'middle';
  ctx.fillText(`${percent}%`, x, y);
}

// 示例:绘制75%进度
drawProgressRing(75);
  • 使用 clearRect() 清除之前绘制的内容
  • 通过计算角度实现进度效果
  • lineCap 设置线段末端样式
  • 添加文本显示当前进度百分比

标签: 圆环js
分享给朋友:

相关文章

js实现选项卡

js实现选项卡

实现选项卡的基本思路 选项卡通常由一组标签和对应的内容面板组成。点击标签时,显示对应的内容面板,隐藏其他面板。实现这一效果需要结合HTML结构、CSS样式和JavaScript交互逻辑。 HTML结…

js轮播图实现原理

js轮播图实现原理

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

js实现延迟

js实现延迟

实现延迟的方法 在JavaScript中,实现延迟操作有多种方式,以下是几种常见的方法: 使用setTimeout函数 setTimeout是JavaScript中最常用的延迟执行方法。它接受一个回…

js jquery

js jquery

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画设计和 Ajax 交互。它兼容多种浏览器,提供易于使用的 API,使开发者能够…

js实现dh

js实现dh

JavaScript 实现 DH(Diffie-Hellman)密钥交换 Diffie-Hellman(DH)密钥交换是一种安全协议,允许双方在不安全的通信信道上建立一个共享密钥。以下是如何在 Jav…

js实现祖玛

js实现祖玛

实现祖玛游戏的核心思路 祖玛游戏的核心玩法是发射彩色珠子,形成三个或以上相同颜色的珠子即可消除。以下是使用JavaScript实现的基本框架。 游戏初始化 创建画布并初始化游戏状态: const…