a
chart.js docs
: "Следующие примеры не работают:"
= Любые размеры холста, такие как (<canvas style="width: 100px;.."
) + абсолютное положение и другие уловки не будут работать.
b
Диаграмма. js использует свой родительский контейнер для обновления размеров отображения и отображения холста. Однако этот метод требует, чтобы контейнер был относительно позиционирован и выделен для только холст диаграммы. После этого можно добиться отзывчивости, задав относительные значения для размера контейнера https://www.chartjs.org/docs/latest/general/responsive.html#important -примечание
<div class="chart-container" style="position: relative; height:40vh; width:80vw">
<canvas id="chart"></canvas>
</div>
= установить любой размер, который вы хотите chart-container
.
c
maintainAspectRatio
- по умолчанию true (сохранить исходное соотношение сторон холста (ширина / высота) при изменении размера).
responive
- по умолчанию (изменяет размер холста диаграммы, когда его контейнер)
a + b + c
Я не знаю, почему другие Ответы stackoverflow дают такие «сложные» решения. overflow-x она работает как любой другой элемент уровня блока (поместите изображение размером 800px w внутри 600px W div = 200px overflow-x).
Пример "Hello World"
Specifi c для переполнения добавить дополнительную оболочку к chart-container
:
<div style="overflow-x: scroll">
<div class="chart-container" style="position: relative; width:900px;">
<canvas id="chart"></canvas>
</div>
</div>
Когда ширина экрана будет меньше чем 900px вы получаете горизонтальную прокрутку (например, на мобильном телефоне):

** Использование CSS точек останова изменить размер контейнера на мобильном телефоне, если хотите.
/* data */
var data = {
labels: ["Africa", "Asia", "Europe", "America"],
datasets: [{
/* data */
label: "Data label",
backgroundColor: ["red", "#8e5ea2","#3cba9f", '#1d49b8'],
data: [5.0,6.7,7.5, 8.6, 3.3, 4.4, 4.5]
}]
};
var options = {
responsive: true,
maintainAspectRatio: true,
title: {
text: 'Hello',
display: true
},
scales: {
xAxes: [{
stacked: false,
ticks: {
},
}],
yAxes: [{
stacked: true,
ticks: {
}
}]
}
};
var myChart = new Chart(document.getElementById("chart"), {
type: 'bar',
data: data,
options: options
});
document.getElementById('submitChange').addEventListener('click', function() {
console.log("before color: " + myChart.data.datasets[0].backgroundColor[0]);
myChart.data.datasets[0].backgroundColor[0] = "green";
myChart.update();
});
div{
border: 1px solid red;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.9.3/Chart.min.js"></script>
<div style="overflow-x: scroll">
<div class="chart-container" style="position: relative; width:900px;">
<canvas id="chart"></canvas>
</div>
</div>