我尝试过在chart.js的 Package 器div上将最小宽度设置为0,但是如果拖动窗口,图表会变大,然后不会缩小。
我想不通!我唯一能做的就是将宽度设置为99%,但是图表不再与我的其他div对齐。我已经为此工作了几天,请帮助!
问:如何使chart.js的宽度达到100%,并增大/缩小到其边界大小。
若要重现,请转到示例,如果关闭菜单,图表将增大;如果打开菜单,图表将不会缩小。它将保持原来的大小并向右溢出。
注意:我的实际项目有两个独立的组件,分别是图表和侧栏。所以calc解决方案在这种情况下不起作用,我不想为了保持良好的实践而紧密耦合任何组件。
Here is my StackBlitz working example
以下图片展示了复制品:
1.图表大小合适,菜单打开x1c 0d1x
1.关闭菜单时图表变大(大小仍然正确)
1.打开菜单,图表向右溢出
4条答案
按热度按时间olmpazwi1#
(摘自我的评论。)
我无法运行StackBlitz(由于Firefox中的跟踪保护,出现JS错误),所以我无法验证这一点,但我在Flex布局中确实遇到了这个问题,并通过确保在父(和祖先)Flex元素上设置
overflow: hidden
来解决它。粗略查看一下CSS,发现这只在.page-wrapper
上完成。aemubtdh2#
更新:此解决方案已停止与chart.js 3一起使用
我也遇到过类似的问题:
我最外层的div是在一个css网格中,也许这也起了作用。
总之,我诊断出问题是这样的:尽管我对chart.js的选项应用了
{ responsive: true, maintainAspectRatio: false }
,但图表的大小是固定的,这会导致chart-container不收缩(即使应用了overflow: hidden
,我也不完全理解为什么),这会导致chartjs插入的div元素检测到大小变化,而不会改变其高度。因此,解决方案是简单地将画布上的高度覆盖为100%:
canvas {height: 100%!important}
。这允许画布容器收缩,导致大小检测div收缩,从而导致画布的重新呈现,从而防止出现纵横比问题。
xxe27gdn3#
将画布包裹在div中,宽度为100%,并将画布的最大宽度设置为100%对我来说很有效:
mlmc2os54#
这里你的画布宽度在绝对父元素之内,所以建议你使用JavaScript动态地改变这个值(在你的例子中是Angular 的)。但是,因为你正在寻找基于CSS的解决方案,这里是你可以添加到你的app.components.css文件中的:
下面是一个工作示例:https://chartjs-overflow-ex-vlsqmn.stackblitz.io/