当前位置:首页 > 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实现分页

实现分页的基本思路 分页功能通常需要处理数据分割、页码生成和用户交互。核心逻辑包括计算总页数、根据当前页截取数据、渲染页码按钮等。 前端分页实现(静态数据) 假设已有全部数据,仅需前端分页展示:…

js实现继承

js实现继承

原型链继承 通过将子类的原型指向父类的实例实现继承。子类实例可以访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Paren…

js实现文件下载

js实现文件下载

使用 a 标签下载文件 通过动态创建 a 标签并设置 download 属性实现文件下载。适用于已知文件 URL 或 Blob 数据的情况。 function downloadFile(url,…

js实现图片放大缩小

js实现图片放大缩小

实现图片放大缩小的基础方法 使用CSS的transform: scale()属性可以快速实现图片的放大缩小效果。通过JavaScript动态修改该属性值: const img = document.…

js实现复制到剪贴板

js实现复制到剪贴板

使用document.execCommand方法(传统方式,已废弃但部分浏览器仍支持) 该方法适用于旧版浏览器,但已被标记为废弃。执行前需确保文本已被选中: function copyToClipb…

js实现列表

js实现列表

使用 JavaScript 实现列表 JavaScript 提供了多种方式来实现列表功能,包括数组操作、DOM 元素动态生成等。以下是几种常见的实现方法: 使用数组存储列表数据 数组是 JavaSc…