Атрибут data-* тега <canvas>


Описание

Атрибуты data-* позволяют хранить пользовательские данные непосредственно в элементе <canvas>. Эти данные могут быть использованы JavaScript для управления поведением холста или передачи дополнительной информации.

Пример использования:
<canvas id="gameCanvas" width="800" height="600" data-game-level="5" data-player-name="Hero" data-background-color="#333" ></canvas>
Аспект Описание Пример
Синтаксис data-любое-название data-config, data-user-id
Доступ из JS Через dataset или getAttribute canvas.dataset.gameLevel
Типы данных Строки (можно хранить JSON) data-options='{"speed":5}'

Практические примеры:

1. Получение данных в JavaScript:
<canvas id="weatherCanvas" data-city="Moscow" data-temp="-5"></canvas> <script> const canvas = document.getElementById('weatherCanvas'); const city = canvas.dataset.city; // "Moscow" const temp = canvas.dataset.temp; // "-5" // Рисуем график на основе данных const ctx = canvas.getContext('2d'); ctx.fillText(`Город: ${city}, Температура: ${temp}°C`, 10, 20); </script>
2. Хранение сложных настроек:
<canvas id="chartCanvas" data-config='{"type":"bar","colors":["#FF0000","#00FF00"]}' ></canvas> <script> const canvas = document.getElementById('chartCanvas'); const config = JSON.parse(canvas.dataset.config); // Используем настройки для отрисовки console.log(config.type); // "bar" </script>

Особенности работы:

  • Данные доступны только через JavaScript
  • Не влияют на отображение без дополнительного кода
  • Могут быть изменены динамически
  • Поддерживаются всеми современными браузерами

Рекомендации:

  • Используйте для хранения параметров инициализации
  • Избегайте хранения больших объемов данных
  • Для сложных структур используйте JSON.stringify()
  • Сочетайте с другими атрибутами canvas
Совет: Data-атрибуты особенно полезны при интеграции canvas-приложений с CMS или серверными шаблонизаторами, когда параметры нужно передавать из backend в frontend.

Примечание: Хотя data-атрибуты удобны для хранения небольших объемов данных, для управления сложным состоянием canvas-приложения лучше использовать отдельные JavaScript-объекты.