javascript - chart.js 图表以固定宽度扭曲

标签 javascript css chart.js

我在一个容器内有一个 chart.js Canvas ,我给它一个固定的最小宽度,这样人们就可以在移动设备上滚动图表。

但是一旦容器具有固定宽度,图表就会变得越扭曲,屏幕越小。

在图表中,我已经尝试设置选项 responsive: truemaintainAspectRatio: false。这稍微解决了问题,但图表仍然失真。

Chart.js 选项:

var options = {
    responsive: true,
    maintainAspectRatio: false,
    scales: {
      yAxes: [{
        stacked: false,
        gridLines: {
          display: true,
          color: "rgba(151,151,151,0.2)"
        }
      }],
      xAxes: [{
        gridLines: {
          display: true,
          color: "rgba(151,151,151,0.2)"
        }
      }]
    }
  };

HTML:

<div class="tds-chart-inner tds-hor-scroll">
 <canvas id="tds-chart-mem"></canvas>
</div>

CSS:

.tds-chart-inner {
 min-width: 850px !important;
}

.tds-hor-scroll {
 left: 0px;
 width: 100% !important;
 overflow-x: scroll;
}

canvas {
  left: 0px;
  height: 300px !important;
}

working chart
工作图表

distorted chart
扭曲的图表

最佳答案

对我来说,问题是图表为自己设置的高度比我自己设置的 Canvas 要大。

我的解决方案是:

  1. 我删除了 Canvas 的所有高度设置(css 和标签属性)
  2. 为 Canvas 创建容器标签并为其设置高度
  3. 在图表选项中添加:

      responsive: true,
      maintainAspectRatio: false,

问题中的例子是在 css 中:

canvas {
  left: 0px;
  height: 300px !important;
}

我会把它改成:

.tds-hor-scroll {
	overflow-x: auto;
}
.tds-chart-inner {
  min-width: 850px;
  height: 300px;
}
<div class="tds-hor-scroll">
	<div class="tds-chart-inner">
	  <canvas id="tds-chart-mem"></canvas>
	</div>
</div>

关于javascript - chart.js 图表以固定宽度扭曲,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51818812/

相关文章:

javascript - 我自己的 Angular 2 Table 组件 - 2 种数据绑定(bind)方式

javascript - jquery .html() 和 javascript 标签

javascript - 使用javascript在工具提示中显示字符串

css - 在 Shiny 中,如何更改范围 slider 标签的格式?

javascript - Chart.js 极地面积图比例不正确

javascript - 如何使用 ChartJS 在水平条形图上绘制垂直线?

javascript - Highcharts:无法读取未定义的属性 'parts/Globals.js'

html - 表格上方的居中按钮

ruby-on-rails - 在 Rails 中覆盖超链接样式

javascript - 如何移动标签在 Chart.js 饼图上的位置