Атрибут data-* тега <pre>
Описание
Атрибуты data-* для тега <pre> позволяют хранить дополнительную пользовательскую информацию, связанную с блоком предварительно форматированного текста. Эти атрибуты не влияют на отображение, но могут использоваться JavaScript для расширенной функциональности.
<pre data-language="javascript" data-line-highlight="5,8-10">
function calculateTotal(items) {
let total = 0;
items.forEach(item => {
total += item.price * item.quantity; // Подсвечиваемая строка
});
return total;
}
</pre>
Типичные сценарии применения:
| Атрибут | Назначение |
|---|---|
data-language |
Указание языка программирования для подсветки синтаксиса |
data-line-highlight |
Строки для особого выделения (номера или диапазоны) |
data-source |
Идентификатор исходного кода в базе данных |
data-version |
Версия кода или документа |
Пример с JavaScript обработкой:
<pre id="code-sample" data-language="python" data-executable="true">
def greet(name):
print(f"Hello, {name}!")
greet("World")
</pre>
<script>
const preElement = document.getElementById('code-sample');
if (preElement.dataset.executable === 'true') {
console.log('Этот код помечен как исполняемый');
// Дополнительная логика обработки
}
</script>
Особенности работы:
- Имена атрибутов должны быть в kebab-case (дефисы между словами)
- Значения всегда строковые (для других типов требуется преобразование)
- Доступны через свойство
datasetв JavaScript - Не влияют на SEO при правильном использовании
Рекомендации:
- Используйте для хранения мета-информации о блоке кода/текста
- Избегайте хранения больших объемов данных (лучше использовать JSON в одном атрибуте)
- Придерживайтесь единого стиля именования в проекте
- Для сложных данных используйте:
data-config='{"lines":5,"trim":true}'
Пример с JSON данными:
<pre data-code-meta='{"author":"Alice","created":"2023-01-15","license":"MIT"}'>
// Пример кода с метаданными
const example = 42;
</pre>
<script>
const meta = JSON.parse(document.querySelector('pre').dataset.codeMeta);
console.log(meta.author); // "Alice"
</script>
Примечание: Хотя data-атрибуты предоставляют гибкий способ хранения информации, для критически важных данных лучше использовать JavaScript-объекты или специализированные API. Data-атрибуты идеальны для разовой конфигурации и передачи мета-информации.