首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >表格中的Chart.js饼图显示页面调整大小时的奇怪行为

问表格中的Chart.js饼图显示页面调整大小时的奇怪行为
EN

Stack Overflow用户
提问于 2019-01-18 15:26:20
回答 1查看 308关注 0票数 0

html表格中有chart.js饼图。问题:在缩小然后放大时,单元格不会调整到初始大小。布局如下所示:

代码语言:javascript
复制
 __________________________
|   inner div | inner div  |
|_____________|____________|
|             |            |
|  Pie1       |  Pie2      |
|_____________|____________|

我已经引用了调整大小的documentation和这个link来在options对象中添加responsive和maintainAspectRatio字段。

如果设置为responsive:true,则允许图表在缩放时调整大小。

设置maintainAspectRatio:false,以修复之前的不规则缩放问题,即多个图表没有按比例调整大小,因为它们占用了表单元格的宽度。

仅供参考,在github here中提到的chart.js缩放有一个模糊的文本问题。

JS fiddle上问题的源码:http://jsfiddle.net/rfaLvuho/。

使用缩小和放大可重现图像。

EN

回答 1

Stack Overflow用户

发布于 2019-01-18 17:34:45

您可以切换到布局的<div>元素来修复此问题。我在下面的代码片段中使用了float,但它也应该适用于flex或grid布局。

​

代码语言:javascript
复制
var randomScalingFactor = function() {
  return Math.round(Math.random() * 100);
};

chartColors = {
  red: 'rgb(255, 99, 132)',
  orange: 'rgb(255, 159, 64)',
  yellow: 'rgb(255, 205, 86)',
  green: 'rgb(75, 192, 192)',
  blue: 'rgb(54, 162, 235)',
  purple: 'rgb(153, 102, 255)',
  grey: 'rgb(201, 203, 207)'
};
var config = {
  type: 'pie',
  data: {
    datasets: [{
      data: [
        randomScalingFactor(),
        randomScalingFactor(),
        randomScalingFactor(),
        randomScalingFactor(),
        randomScalingFactor(),
      ],
      backgroundColor: [
        chartColors.red,
        chartColors.orange,
        chartColors.yellow,
        chartColors.green,
        chartColors.blue,
      ],
      label: 'Dataset 1'
    }],
    labels: [
      'Red',
      'Orange',
      'Yellow',
      'Green',
      'Blue'
    ]
  },
  options: {
    responsive: true,
    maintainAspectRatio: false,
    legend: false
  }
};

var myPie1 = new Chart('chart-area1', config);
var myPie2 = new Chart('chart-area2', config);
代码语言:javascript
复制
.canvas-holder {
  width: 50%;
  float: left;
}
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.3/Chart.min.js"></script>
<div class="canvas-holder">
  <canvas id="chart-area1"></canvas>
</div>
<div class="canvas-holder">
  <canvas id="chart-area2"></canvas>
</div>

​

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54249422

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档