javascript - 使 Chart.js Canvas 在可调整大小的 div 内响应

标签 javascript css canvas charts chart.js

我想创建一个内部包含 Chart.js 图表的容器,但诀窍是图表必须保持相对于其父级的响应,而不仅仅是对视口(viewport)的响应 - 因为父级应该可以调整大小......如何我可以让它“意识到”以便它正确拉伸(stretch)..?我尝试了几种方法,但都没有奏效。这是带有示例的笔:

https://codepen.io/anon/pen/BeYWNw

.container {
  width: 100%;      
  resize: both;
  overflow: auto;
  border: 1px solid blue;
}

非常感谢任何建议!

最佳答案

您需要将 .container 设置为:

position: relative;
overflow: hidden;

如果您希望图表适合 div,请设置 maintainAspectRatio: false

这是一个工作示例:

let myChart = new Chart(
  document.getElementById('chart'), {
    type: 'bar',
    data: {
      labels: ['a', 'b', 'c'],
      datasets: [{
        label: 'Series1',
        data: [1, 10, 6]
      }]
    },
    options: {
      maintainAspectRatio: false
    }
  }
);
.container {
  border: 1px solid #000;
  overflow: hidden;
  position: relative;
  resize: both;
}
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.8.0/Chart.bundle.min.js"></script>
<div class="container">
  <canvas id="chart"></canvas>
</div>

关于javascript - 使 Chart.js Canvas 在可调整大小的 div 内响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56274596/

相关文章:

html - Firefox getBoundingClientRect() 不考虑转换

html - 如何设置 body 背景的图像不透明度

javascript - js Canvas 发射无用的激光

javascript - 可以判断两个对象在 Chrome 调试器中是否相同?

javascript - 如何在单击的元素正下方显示详细信息 div/弹出框

javascript - 如何使用 jQuery 和 javascript 计算 <tbody> 中包含的 <tr> 数量?

html - 如何让盒子元素自动展开?

Javascript OnBlur 不工作

javascript - 基于HasClass的jQuery Canvas暂停和启动监听器

javascript - 当用户在屏幕上拖动/平移时 Canvas 清晰