Настройка шрифта и отступов заголовка

В библиотеке Chart.js настройка заголовка графика реализуется через встроенный плагин title, который входит в систему plugins. Он управляет отображением текста, его стилем, положением и внутренними отступами. В актуальной архитектуре Chart.js (версии 3 и выше) все параметры заголовка задаются внутри конфигурационного объекта options.plugins.title.

Базовая структура настройки выглядит следующим образом:

const config = {
  type: 'bar',
  data: {
    labels: ['Янв', 'Фев', 'Мар', 'Апр'],
    datasets: [{
      label: 'Продажи',
      data: [12, 19, 3, 5]
    }]
  },
  options: {
    plugins: {
      title: {
        display: true,
        text: 'Динамика продаж'
      }
    }
  }
};

При отсутствии параметра display: true заголовок не отображается, даже если задан текст.


Шрифт заголовка и его структура

Настройка шрифта выполняется через объект font, который позволяет контролировать семейство шрифтов, толщину, стиль и размер текста.

options: {
  plugins: {
    title: {
      display: true,
      text: 'Финансовые показатели',
      font: {
        family: 'Arial',
        size: 20,
        weight: 'bold',
        style: 'normal',
        lineHeight: 1.2
      }
    }
  }
}

Ключевые параметры font:

family Определяет семейство шрифтов. Может быть строкой с перечислением fallback-шрифтов:

family: "'Roboto', 'Helvetica Neue', sans-serif"

size Размер шрифта в пикселях. Chart.js не использует rem или em, только фиксированное значение.

weight Толщина шрифта. Поддерживаются значения CSS: normal, bold, а также числовые значения (400, 600, 700), если шрифт их поддерживает.

style Стиль текста: normal, italic, oblique.

lineHeight Высота строки. Особенно важна при многострочных заголовках.


Многострочный заголовок и особенности отображения

Chart.js позволяет передавать массив строк, формируя многострочный заголовок. Каждая строка получает собственную линию отображения, но общий шрифт применяется ко всем строкам одинаково.

title: {
  display: true,
  text: [
    'Аналитика продаж',
    'за первый квартал'
  ],
  font: {
    size: 18,
    weight: '600'
  }
}

В таком случае lineHeight влияет на расстояние между строками, но не заменяет padding.


Отступы заголовка (padding)

Отступы управляют пространством вокруг текста заголовка и играют ключевую роль в визуальной композиции графика. В Chart.js используется свойство padding, которое может быть числом или объектом.

Единое значение padding

title: {
  display: true,
  text: 'Статистика пользователей',
  padding: 20
}

Значение применяется равномерно ко всем сторонам.


Детализированная настройка padding

Для точного контроля используется объект:

title: {
  display: true,
  text: 'Рост аудитории',
  padding: {
    top: 10,
    bottom: 25,
    left: 0,
    right: 0
  }
}

Такой подход позволяет смещать заголовок относительно области графика, не влияя на остальные элементы.


Влияние padding на компоновку графика

Отступы заголовка напрямую влияют на:

  • расстояние между заголовком и областью построения графика;
  • визуальную плотность верхней части контейнера;
  • взаимодействие с легендой, если она расположена сверху.

При увеличении padding.bottom заголовок визуально «отрывается» от графика, создавая более воздушную композицию. При уменьшении значений элементы становятся плотнее.


Комбинация шрифта и padding в сложных макетах

В реальных интерфейсах часто требуется согласовать заголовок с остальными компонентами графика. Например, при использовании крупного шрифта необходимо компенсировать визуальную тяжесть увеличением отступов:

title: {
  display: true,
  text: 'Ключевые метрики',
  font: {
    size: 24,
    weight: '700'
  },
  padding: {
    top: 15,
    bottom: 30
  }
}

При меньшем шрифте можно сократить отступы:

title: {
  display: true,
  text: 'Метрики',
  font: {
    size: 14,
    weight: '500'
  },
  padding: 8
}

Центровка и выравнивание заголовка

Хотя основное управление заголовком происходит через шрифт и padding, важную роль играет параметр align, определяющий горизонтальное положение текста:

title: {
  display: true,
  text: 'Продажи по регионам',
  align: 'center'
}

Поддерживаются значения:

  • start
  • center
  • end

Выравнивание влияет на визуальный баланс и особенно заметно при широких контейнерах.


Наследование и глобальные настройки шрифта

Chart.js позволяет задавать глобальные параметры, которые будут применяться ко всем графикам:

Chart.defaults.plugins.title.font = {
  family: 'Inter',
  size: 16,
  weight: '600'
};

Это позволяет унифицировать стиль заголовков без дублирования конфигурации.


Динамическое изменение шрифта и отступов

Параметры заголовка могут изменяться во время выполнения, что используется в интерактивных интерфейсах:

chart.options.plugins.title.font.size = 22;
chart.options.plugins.title.padding = 18;
chart.update();

Изменения применяются после вызова update(), который пересчитывает макет графика.


Особенности рендеринга при масштабировании

При изменении размеров контейнера Chart.js пересчитывает расположение заголовка. Однако:

  • font.size остаётся фиксированным в пикселях;
  • padding масштабируется относительно общей геометрии графика;
  • при резком уменьшении ширины возможно перенос строк при массиве текста.

Работа с кастомными шрифтами

При использовании веб-шрифтов важно учитывать момент их загрузки. Если шрифт не успел загрузиться до отрисовки графика, Chart.js использует fallback-шрифт, что может изменить размеры заголовка и привести к «прыжку» макета после загрузки.

font: {
  family: "'Montserrat', sans-serif",
  size: 18
}

После загрузки шрифта рекомендуется обновление графика для корректного пересчёта геометрии.


Влияние lineHeight на многострочные заголовки

При работе с несколькими строками текста lineHeight становится ключевым параметром для контроля плотности:

title: {
  display: true,
  text: ['Аналитика', 'за 2026 год'],
  font: {
    size: 18,
    lineHeight: 1.4
  }
}

Меньшие значения делают строки плотнее, большие — увеличивают вертикальные промежутки.


Взаимодействие заголовка с легендой и осями

Заголовок занимает верхнюю часть области canvas и влияет на размещение остальных компонентов:

  • при верхней легенде уменьшается доступное пространство;
  • увеличенный padding заголовка может сдвигать область построения вниз;
  • при плотных макетах важно балансировать title.padding и legend.padding.

Эти параметры совместно формируют вертикальную структуру графика, определяя визуальную иерархию.