当前位置:首页 > 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 属性可以创建环形图:

<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 创建锥形渐变,每个颜色段的百分比对应环形图的占比。

动画效果实现

为环形图添加旋转动画:

.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 实现交互:

css环形图制作

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

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

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

相关文章

淘宝导航css制作

淘宝导航css制作

淘宝导航CSS制作 淘宝导航栏通常包含多个层级,包括主导航、子导航等。以下是实现类似淘宝导航栏的CSS制作方法。 基础HTML结构 <div class="nav-container">…

纯css制作下拉菜单

纯css制作下拉菜单

纯CSS下拉菜单实现方法 通过CSS的:hover伪类和display属性可以实现纯CSS下拉菜单,无需JavaScript。以下是具体实现方式: HTML结构示例: <nav class=…

css 制作输入框

css 制作输入框

基础输入框样式 使用 input 或 textarea 元素创建输入框,通过 CSS 设置边框、圆角、内边距和背景色: .input-basic { border: 1px solid #ccc…

用css制作网页

用css制作网页

CSS 制作网页基础方法 HTML 结构搭建 在开始 CSS 设计前需先完成 HTML 骨架。典型结构包含 <header>、<nav>、<main> 和 <…

css制作下拉菜单

css制作下拉菜单

使用纯CSS制作下拉菜单 通过HTML和CSS可以创建无需JavaScript的下拉菜单,主要利用:hover伪类和display属性控制显示隐藏。 HTML结构示例: <div class…

css 导航栏制作

css 导航栏制作

CSS 导航栏制作方法 水平导航栏 使用 display: inline-block 或 flexbox 创建水平导航栏。设置背景色、内边距和悬停效果增强交互性。 .navbar { back…