当前位置:首页 > JavaScript

js实现圆环

2026-04-05 16:54:42JavaScript

实现圆环的几种方法

使用CSS和JavaScript可以创建圆环效果,以下是几种常见的实现方式:

使用CSS border-radius和border

通过设置元素的border-radius为50%创建圆形,再通过border属性控制圆环粗细:

<div class="circle"></div>
.circle {
  width: 100px;
  height: 100px;
  border-radius: 50%;
  border: 10px solid #3498db;
  background-color: transparent;
}

使用Canvas绘制圆环

通过Canvas API可以更灵活地绘制圆环:

<canvas id="myCanvas" width="200" height="200"></canvas>
const canvas = document.getElementById('myCanvas');
const ctx = canvas.getContext('2d');

ctx.beginPath();
ctx.arc(100, 100, 80, 0, 2 * Math.PI);
ctx.lineWidth = 20;
ctx.strokeStyle = '#e74c3c';
ctx.stroke();

使用SVG创建圆环

SVG是矢量图形,适合创建圆环:

<svg width="200" height="200">
  <circle cx="100" cy="100" r="80" 
          stroke="#2ecc71" stroke-width="20" fill="none"/>
</svg>

动态进度圆环

结合Canvas和JavaScript可以实现动态进度圆环:

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

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

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

  // 绘制进度圆环
  const endAngle = (percent / 100) * 2 * Math.PI - Math.PI/2;
  ctx.beginPath();
  ctx.arc(centerX, centerY, radius, -Math.PI/2, endAngle);
  ctx.lineWidth = lineWidth;
  ctx.strokeStyle = '#3498db';
  ctx.stroke();
}

// 使用示例
drawProgressRing(75); // 绘制75%的进度圆环

CSS动画圆环

使用CSS动画可以创建旋转的圆环效果:

js实现圆环

.spinner {
  width: 100px;
  height: 100px;
  border: 10px solid rgba(0, 0, 0, 0.1);
  border-radius: 50%;
  border-left-color: #3498db;
  animation: spin 1s linear infinite;
}

@keyframes spin {
  0% { transform: rotate(0deg); }
  100% { transform: rotate(360deg); }
}

以上方法可以根据具体需求选择使用,CSS方法简单高效,Canvas和SVG提供更多自定义选项,适合复杂交互场景。

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

相关文章

js 实现分页

js 实现分页

实现分页的基本逻辑 分页功能通常需要后端返回数据总量或总页数,前端根据当前页码和每页条数截取对应数据。以下是一个基于JavaScript的简单分页实现方案: 前端分页实现 假设已有从后端获取的完整数…

jquery js

jquery js

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

js实现二叉树

js实现二叉树

二叉树的基本概念 二叉树是一种树形数据结构,每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树的常见操作包括插入、删除、遍历等。 二叉树的节点定义 在JavaScript中,二叉树的节点可…

js钟表实现

js钟表实现

实现JavaScript钟表的基本方法 创建一个简单的JavaScript钟表可以通过以下步骤完成,涵盖数字和模拟两种形式。 数字钟表实现 HTML结构只需一个显示时间的容器: <div i…

vue实现js休眠

vue实现js休眠

实现 JavaScript 休眠的方法 在 Vue 中实现 JavaScript 休眠(延迟执行)可以通过以下方式实现。由于 JavaScript 本身没有内置的 sleep 函数,通常使用 Prom…

js实现vue路由

js实现vue路由

Vue 路由的基本实现 在 Vue.js 中实现路由功能通常使用 Vue Router 库。Vue Router 是 Vue.js 官方的路由管理器,用于构建单页面应用(SPA)。 安装 Vue R…