You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用CSS/JavaScript将饼图转换为动态多渐变模糊图表?

常规饼图与模糊渐变色彩块效果对照

完全可以通过CSS+JavaScript实现该效果,且天然支持动态数据适配,不需要依赖复杂的第三方图形库。

实现原理

左侧模糊图表本质是按饼图数据占比分配宽度的纯色横向条块,叠加高斯模糊柔化边缘,色块的数量、颜色、占比完全和右侧饼图数据一一对应,数据变更时只需要重新计算渲染即可自动适配。

实现步骤
  • 数据预处理:拿到饼图原始数据(包含每个扇区的数值、对应色值),先计算所有数值的总和,再算出每个色块占总宽度的百分比。
  • 渲染基础色条:用flex布局横向排列所有色块,每个色块宽度设置为计算得到的百分比值,背景填充对应色值,此时得到的是硬边缘的多色横条。
  • 添加模糊效果:给色条容器添加CSS属性filter: blur(12px ~ 24px),模糊半径根据容器实际尺寸调整即可得到柔化效果;外层容器设置overflow: hidden裁掉模糊溢出的边缘,可额外加内阴影让边缘和背景融合更自然。
  • 动态适配:封装通用渲染函数,入参为饼图数据数组,每次数据新增、修改、删除时清空原有节点重新渲染,色块数量会自动和数据长度保持一致。
最小实现代码
<style>
.chart-wrap {
  display: flex;
  gap: 40px;
  align-items: center;
}
/* 模糊色彩块容器 */
.fuzzy-block {
  width: 180px;
  height: 280px;
  overflow: hidden;
  border-radius: 12px;
}
.fuzzy-bar {
  display: flex;
  width: 100%;
  height: 100%;
  filter: blur(16px); /* 核心模糊属性 */
}
.fuzzy-bar .seg {
  height: 100%;
}
/* 常规饼图容器(可替换为你现有饼图逻辑) */
.pie-chart {
  width: 280px;
  height: 280px;
  border-radius: 50%;
}
</style>

<div class="chart-wrap">
  <div class="fuzzy-block">
    <div class="fuzzy-bar" id="fuzzyBar"></div>
  </div>
  <div class="pie-chart" id="pieChart"></div>
</div>

<script>
/**
 * 渲染模糊色彩块
 * @param {Array} data 饼图数据,每项含value(数值)、color(十六进制/rgb色值)
 */
function renderFuzzyChart(data) {
  const total = data.reduce((sum, item) => sum + item.value, 0)
  const bar = document.getElementById('fuzzyBar')
  bar.innerHTML = ''
  data.forEach(item => {
    const seg = document.createElement('div')
    seg.className = 'seg'
    seg.style.width = `${(item.value / total) * 100}%`
    seg.style.backgroundColor = item.color
    bar.appendChild(seg)
  })
}

// 测试调用,可替换为任意饼图数据
const mockPieData = [
  {value: 32, color: '#5470c6'},
  {value: 22, color: '#91cc75'},
  {value: 18, color: '#fac858'},
  {value: 15, color: '#ee6666'},
  {value: 13, color: '#73c0de'}
]
renderFuzzyChart(mockPieData)
</script>

优化提示:如果需要更自然的色彩融合效果,可以给相邻色块设置1~3px的左右负margin让色块轻微重叠,模糊后的色彩过渡会更顺滑;如果需要做交互联动,比如hover饼图扇区时对应色块高亮,只需要给对应色块节点调整透明度、亮度属性即可。

内容的提问来源于stack exchange,提问作者Jesús V.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 21:06:26