В библиотеке Chart.js большинство визуальных параметров можно задавать двумя способами:
Chart.defaults.Глобальные параметры применяются ко всем графикам автоматически. Такой подход особенно важен при создании:
Chart.defaultsВсе глобальные настройки находятся внутри объекта:
Chart.defaults
Через него можно изменять:
Пример базовой настройки:
Chart.defaults.color = '#333';
Chart.defaults.font.size = 14;
Chart.defaults.font.family = 'Arial';
После этого все создаваемые графики автоматически получат новые параметры.
Chart.defaults.colorПараметр:
Chart.defaults.color
определяет основной цвет текста во всей библиотеке.
Он применяется к:
Пример:
Chart.defaults.color = '#444';
Chart.defaults.color = '#1E293B';
Chart.defaults.color = 'rgb(30, 41, 59)';
Chart.defaults.color = 'rgba(30, 41, 59, 0.8)';
Особенно удобно в больших приложениях.
Chart.defaults.color = getComputedStyle(document.documentElement)
.getPropertyValue('--text-color');
Chart.defaults.fontВсе параметры шрифтов находятся внутри:
Chart.defaults.font
Доступные свойства:
| Свойство | Назначение |
|---|---|
family |
семейство шрифта |
size |
размер |
style |
стиль |
weight |
толщина |
lineHeight |
межстрочный интервал |
familyChart.defaults.font.family = 'Inter';
Chart.defaults.font.family =
'"Inter", "Segoe UI", sans-serif';
HTML:
<link
href="https://fonts.googleapis.com/css2?family=Inter:wght@400;600&display=swap"
rel="stylesheet"
/>
Jav * ascript:
Chart.defaults.font.family = 'Inter';
sizeChart.defaults.font.size = 16;
Все текстовые элементы графиков увеличатся автоматически.
Chart.defaults.font.size = 10;
Подходит для:
Chart.defaults.font.size = 20;
Подходит для:
weightChart.defaults.font.weight = 'bold';
Допустимые значения:
'normal'
'bold'
'lighter'
'bolder'
Также поддерживаются числовые значения:
Chart.defaults.font.weight = 600;
styleChart.defaults.font.style = 'italic';
Другие варианты:
'normal'
'italic'
'oblique'
lineHeightChart.defaults.font.lineHeight = 1.5;
или:
Chart.defaults.font.lineHeight = '24px';
Chart.defaults.color = '#334155';
Chart.defaults.font.family =
'"Inter", sans-serif';
Chart.defaults.font.size = 14;
Chart.defaults.font.weight = 500;
Chart.defaults.font.lineHeight = 1.4;
У библиотеки нет глобального свойства:
Chart.defaults.backgroundColor
потому что фон обычно задаётся:
canvas {
background: #FFFFFF;
}
.chart-wrapper {
background: #F8FAFC;
padding: 20px;
border-radius: 12px;
}
Chart.defaults.scale.grid.color =
'rgba(0,0,0,0.1)';
После этого все линии сетки станут полупрозрачными.
Chart.defaults.scale.grid.color =
'rgba(255,255,255,0.08)';
Используется в dark theme.
Chart.defaults.scale.ticks.color = '#64748B';
Chart.defaults.scale.ticks.font.size = 12;
Chart.defaults.scale.ticks.font.family =
'Inter';
Chart.defaults.scale.border.color =
'#CBD5E1';
Chart.defaults.plugins.legend.labels.color =
'#1E293B';
Chart.defaults.plugins.legend.labels.font =
{
size: 14,
family: 'Inter',
weight: '600'
};
Chart.defaults.plugins.title.color =
'#0F172A';
Chart.defaults.plugins.title.font =
{
size: 20,
weight: 'bold'
};
Chart.defaults.plugins.tooltip.bodyColor =
'#FFFFFF';
Chart.defaults.plugins.tooltip.titleColor =
'#FFFFFF';
Chart.defaults.plugins.tooltip.backgroundColor =
'#0F172A';
Chart.defaults.plugins.tooltip.bodyFont =
{
size: 13,
family: 'Inter'
};
Chart.defaults.plugins.tooltip.titleFont =
{
size: 14,
weight: 'bold'
};
Один из лучших подходов — вынести все настройки в отдельный модуль.
chart-theme.jsexport function applyChartTheme() {
Chart.defaults.color = '#CBD5E1';
Chart.defaults.font.family =
'"Inter", sans-serif';
Chart.defaults.font.size = 13;
Chart.defaults.scale.grid.color =
'rgba(255,255,255,0.06)';
Chart.defaults.scale.ticks.color =
'#94A3B8';
Chart.defaults.plugins.legend.labels.color =
'#E2E8F0';
Chart.defaults.plugins.tooltip.backgroundColor =
'#0F172A';
}
import { applyChartTheme } from './chart-theme.js';
applyChartTheme();
function setLightTheme() {
Chart.defaults.color = '#334155';
Chart.defaults.scale.grid.color =
'rgba(0,0,0,0.08)';
}
function setDarkTheme() {
Chart.defaults.color = '#E2E8F0';
Chart.defaults.scale.grid.color =
'rgba(255,255,255,0.08)';
}
const isDark = true;
if (isDark) {
setDarkTheme();
} else {
setLightTheme();
}
Современный подход — синхронизация Chart.js с CSS-темой сайта.
:root {
--chart-text: #1E293B;
--chart-grid: rgba(0,0,0,0.08);
}
.dark {
--chart-text: #E2E8F0;
--chart-grid: rgba(255,255,255,0.08);
}
const styles =
getComputedStyle(document.documentElement);
Chart.defaults.color =
styles.getPropertyValue('--chart-text');
Chart.defaults.scale.grid.color =
styles.getPropertyValue('--chart-grid');
Иногда требуется вернуть стандартное оформление.
Chart.defaults = Chart.overrides;
Chart.defaults.color = '#666';
Chart.defaults.font.size = 12;
Даже при наличии глобальных настроек конкретный график может использовать собственные параметры.
new Chart(ctx, {
type: 'bar',
data: data,
options: {
plugins: {
legend: {
labels: {
color: '#EF4444'
}
}
}
}
});
Локальные параметры всегда имеют приоритет над глобальными.
Chart.js использует следующую последовательность:
Chart.defaults;Неправильно:
const chart = new Chart(ctx, config);
Chart.defaults.color = 'red';
График уже был создан со старыми параметрами.
Chart.defaults.color = 'red';
const chart = new Chart(ctx, config);
Если браузер не успел загрузить шрифт:
Chart.defaults.font.family = 'Inter';
то график сначала будет отображён системным шрифтом.
Создавать графики после загрузки шрифтов:
document.fonts.ready.then(() => {
createCharts();
});
Глобальные настройки значительно эффективнее локальных, потому что:
Chart.defaults.color = '#CBD5E1';
Chart.defaults.font.family =
'"Inter", sans-serif';
Chart.defaults.font.size = 13;
Chart.defaults.font.weight = 500;
Chart.defaults.scale.grid.color =
'rgba(255,255,255,0.06)';
Chart.defaults.scale.border.color =
'rgba(255,255,255,0.1)';
Chart.defaults.scale.ticks.color =
'#94A3B8';
Chart.defaults.plugins.legend.labels.color =
'#E2E8F0';
Chart.defaults.plugins.legend.labels.font =
{
size: 13
};
Chart.defaults.plugins.title.color =
'#F8FAFC';
Chart.defaults.plugins.title.font =
{
size: 18,
weight: 'bold'
};
Chart.defaults.plugins.tooltip.backgroundColor =
'#0F172A';
Chart.defaults.plugins.tooltip.bodyColor =
'#FFFFFF';
Chart.defaults.plugins.tooltip.titleColor =
'#FFFFFF';