C3.js设置tick的multiline:false无效,如何实现左侧刻度单行显示?
解决C3.js旋转柱状图左侧刻度无法单行显示的问题
你遇到的问题是启用rotated: true后,分类轴(原X轴)的文本渲染逻辑需要额外调整,仅设置全局的axis.tick.multiline: false不足以覆盖C3的默认样式和渲染行为。以下是两种可行的解决方法:
方法一:精准配置轴的tick参数
将multiline: false配置到对应轴的tick选项中,确保配置直接作用到目标轴:
修改后的JS代码:
var graph = c3.generate({ bindto: "#chart", data: { columns: [ ["name1","5.00","3.00"], ["name2","3","2"] ], type : 'bar', colors : { "name1": "#00ff00", "name2": "#0000ff" }, }, bar: { width: 10 }, axis: { x: { type: 'category', categories: [ "test looooooong string no multiline", "string 2" ], tick: { multiline: false // 将配置放在X轴的tick子项中 } }, rotated: true }, transition: { duration: 1000 }, padding: { bottom: 20, left: 200 // 增加左侧内边距,避免长文本溢出容器 }, title: { text: 'titolo' } });
方法二:添加自定义CSS强制不换行
如果配置调整后仍不生效,可直接通过CSS强制tick文本保持单行:
添加以下CSS代码:
.c3-axis-x .tick text { white-space: nowrap !important; text-overflow: ellipsis; /* 可选:文本过长时显示省略号 */ overflow: hidden; }
内容的提问来源于stack exchange,提问作者user2342558
相关产品推荐
相关产品推荐

