当前位置:首页 > CSS

css环形图制作

2026-02-13 09:52:29CSS

使用 CSS 和 SVG 制作环形图

CSS 结合 SVG 可以轻松实现环形图效果。以下是一个简单的方法:

<svg viewBox="0 0 100 100" class="donut">
  <circle cx="50" cy="50" r="45" fill="none" stroke="#eee" stroke-width="10"/>
  <circle cx="50" cy="50" r="45" fill="none" stroke="#4CAF50" stroke-width="10" 
          stroke-dasharray="283" stroke-dashoffset="70"/>
</svg>
.donut {
  width: 200px;
  height: 200px;
}

stroke-dasharray 控制虚线长度,stroke-dashoffset 控制偏移量。283 是 2πr(约 282.74)的值,70 表示约 25% 的空白。

纯 CSS 环形图方案

利用 CSS 的 border 和 transform 属性可以创建环形图:

css环形图制作

<div class="pie-chart"></div>
.pie-chart {
  width: 100px;
  height: 100px;
  border-radius: 50%;
  background: conic-gradient(#4CAF50 25%, #2196F3 0 50%, #FFC107 0 75%, #F44336 0);
}

conic-gradient 创建锥形渐变,每个颜色段的百分比对应环形图的占比。

动画效果实现

为环形图添加旋转动画:

css环形图制作

.donut {
  animation: rotate 2s linear infinite;
}

@keyframes rotate {
  from { transform: rotate(0deg); }
  to { transform: rotate(360deg); }
}

响应式环形图

使用 CSS 变量使环形图适应不同尺寸:

:root {
  --chart-size: 150px;
}

.pie-chart {
  width: var(--chart-size);
  height: var(--chart-size);
}

通过 JavaScript 可以动态修改 CSS 变量值来调整图表大小。

交互式环形图

结合 JavaScript 实现交互:

document.querySelector('.donut circle').addEventListener('mouseover', function() {
  this.style.stroke = '#FF5722';
});

这些方法提供了从简单到进阶的环形图实现方案,可根据具体需求选择合适的技术方案。

标签: 环形css
分享给朋友:

相关文章

css制作图标

css制作图标

使用CSS制作图标的方法 使用伪元素和边框 通过CSS的::before和::after伪元素结合border属性可以创建简单的几何形状图标。例如制作一个三角形: .triangle { w…

制作css外部

制作css外部

创建CSS外部文件的方法 新建一个纯文本文件,将文件扩展名改为.css,例如styles.css。确保文件内容只包含CSS代码,不包含HTML标签。 编写CSS内容 在CSS文件中直接编写样式规则,…

网页制作教程css

网页制作教程css

CSS 基础概念 CSS(层叠样式表)用于控制网页的视觉表现,包括布局、颜色、字体等。通过将样式与 HTML 结构分离,提升代码可维护性。 CSS 引入方式 内联样式:直接在 HTML 标签中使…

css与html制作

css与html制作

CSS与HTML制作基础 CSS与HTML是构建网页的核心技术,HTML负责结构,CSS负责样式。以下是关键要点: HTML基础结构 <!DOCTYPE html> <html&…

用css制作下拉菜单

用css制作下拉菜单

使用纯CSS制作下拉菜单 HTML结构 基础的下拉菜单需要嵌套的HTML结构,通常使用<ul>和<li>标签实现层级关系: <div class="dropdown"&…

css制作靶子

css制作靶子

CSS 制作靶子 使用 CSS 可以轻松创建一个靶子效果,主要通过嵌套的圆形元素和背景色实现。以下是实现方法: HTML 结构 <div class="target"> &…