当前位置:首页 > JavaScript

js实现圆环

2026-02-01 00:33:18JavaScript

使用 SVG 实现圆环

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

<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 提供更灵活的绘制方式,适合需要动态效果的场景。

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 可以创建动态进度圆环。

js实现圆环

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 实现vue模板

js 实现vue模板

实现 Vue 模板的 JavaScript 方法 通过原生 JavaScript 可以实现类似 Vue 的模板渲染功能,主要包括数据绑定、指令处理和模板解析。以下是核心实现思路: 数据绑定与…

js实现轮播

js实现轮播

实现轮播图的基本思路 轮播图的核心逻辑是通过定时切换展示的图片或内容,通常结合左右滑动按钮和指示器(小圆点)增强交互性。以下是基于原生JavaScript的实现方法。 HTML结构 构建轮播图的HT…

js实现打印

js实现打印

使用window.print()方法实现打印 在JavaScript中,可以通过调用window.print()方法直接触发浏览器的打印功能。这会打开系统的打印对话框,用户可以选择打印机和设置打印选项…

js 实现vue

js 实现vue

Vue.js 的基本实现 在 JavaScript 中实现 Vue.js 的核心功能,可以通过数据绑定、响应式系统和虚拟 DOM 来实现。以下是实现 Vue.js 核心功能的简化版本。 数据响应式系…

js实现论坛

js实现论坛

实现论坛的基本功能 使用JavaScript实现一个论坛需要结合前端和后端技术。前端可以使用React、Vue或Angular等框架,后端可以选择Node.js配合Express或Koa框架。数据库可…

js实现求导

js实现求导

实现数值求导的方法 在JavaScript中实现求导通常采用数值方法,因为JavaScript不是符号计算语言。以下是常见的数值微分方法: 中心差分法 中心差分法提供较高精度的导数近似: func…