You need to enable JavaScript to run this app. 仅使用CSS创建柱状图:参考CSS-Tricks教程但柱子不显示如何解决
优惠活动
大模型
产品
解决方案
定价
更多

仅使用CSS创建柱状图:参考CSS-Tricks教程但柱子不显示如何解决

纯CSS柱状条不显示的故障原因与修复

核心故障触发点

  • 直接照搬了基于预处理器编写的示例代码,未做语法转换。示例代码中使用的选择器嵌套、变量定义、循环生成样式的写法均为Sass专属语法,原生浏览器不支持,会将这部分规则判定为无效代码直接丢弃——其中就包括伪元素生成条形、按百分比设置宽度的核心规则,自然无法显示柱状条。
  • 定位逻辑错位。左侧的文本标签设置了相对于整个图表容器的绝对定位,所有标签会全部堆叠在容器左上角,完全不与对应行的条形位置对齐,视觉上也会让条形呈现为“消失”的状态。
  • 布局尺寸预留错误。条形容器设置了130px的左外边距,但左侧标签没有占用对应布局空间,导致整体内容偏移量错位,进一步加剧显示异常。

可直接落地的修复步骤

  1. 将所有Sass语法转换为原生CSS
    • 把嵌套的伪元素、hover规则展开为完整选择器:比如将嵌套在.percentage内的&:after规则,写为独立的.percentage::after选择器;将嵌套的hover规则写为.percentage:hover::after,完全移除&符号关联父级的写法。
    • 把原本靠@for循环生成的宽度规则,替换为逐行声明的原生样式,对应每个类别的百分比设置伪元素宽度即可,比如.percentage-11::after { width: 11%; }、.percentage-49::after { width: 49%; },不需要依赖循环逻辑。
  2. 修正定位关系
    • 给每个.percentage列表项加上position: relative,让内部的文本标签相对于当前列表项定位,而不是相对于整个图表容器定位,从根源上避免所有标签堆叠的问题。
    • 调整文本标签的位置:将.text的left: 0值改为left: -130px,匹配条形容器的左外边距尺寸,让标签刚好落在条形左侧的预留空白区域,实现同行对齐。
  3. 清理冗余无效代码
    • 移除dt标签上重复声明的font-weight: 700属性。
    • 去掉.percentage::after上多余的margin-bottom: 10px属性,配合原有的垂直居中逻辑即可实现条形在容器内的居中显示,不需要额外边距。

修复后可直接运行的完整代码

<style>
dl {
  display: flex;
  background-color: white;
  flex-direction: column;
  width: 100%;
  max-width: 700px;
  position: relative;
  padding: 20px;
}

dt {
  align-self: flex-start;
  width: 100%;
  font-weight: 700;
  display: block;
  text-align: center;
  font-size: 1.2em;
  margin-bottom: 20px;
  margin-left: 130px;
}

.text {
  font-weight: 600;
  display: flex;
  align-items: center;
  height: 40px;
  width: 130px;
  background-color: white;
  position: absolute;
  left: -130px;
  justify-content: flex-end;
}

.percentage {
  font-size: .8em;
  line-height: 1;
  text-transform: uppercase;
  width: 100%;
  height: 40px;
  margin-left: 130px;
  position: relative;
  background: repeating-linear-gradient(
    to right,
    #ddd,
    #ddd 1px,
    #fff 1px,
    #fff 5%
  );
}

.percentage::after {
  content: "";
  display: block;
  background-color: #3d9970;
  height: 90%;
  position: relative;
  top: 50%;
  transform: translateY(-50%);
  transition: background-color .3s ease;
  cursor: pointer;
}

.percentage:hover::after,
.percentage:focus::after {
  background-color: #aaa; 
}

/* 逐行声明百分比宽度,替代Sass循环逻辑 */
.percentage-2::after { width: 2%; }
.percentage-5::after { width: 5%; }
.percentage-11::after { width: 11%; }
.percentage-16::after { width: 16%; }
.percentage-49::after { width: 49%; }

html, body {
  height: 500px;
  font-family: sans-serif;
  color: #333;
}
</style>
<div class="wrapper">
  <dl>
    <dt>2015年6月浏览器市场份额</dt>
    <dd class="percentage percentage-11"><span class="text">IE 11: 11.33%</span></dd>
    <dd class="percentage percentage-49"><span class="text">Chrome: 49.77%</span></dd>
    <dd class="percentage percentage-16"><span class="text">Firefox: 16.09%</span></dd>
    <dd class="percentage percentage-5"><span class="text">Safari: 5.41%</span></dd>
    <dd class="percentage percentage-2"><span class="text">Opera: 1.62%</span></dd>
    <dd class="percentage percentage-2"><span class="text">Android 4.4: 2%</span></dd>
  </dl>
</div>

内容的提问来源于stack exchange,提问作者user4221591

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.05 18:45:02