Атрибут contenteditable тега <figcaption>
Описание
Атрибут contenteditable в теге <figcaption> позволяет пользователям редактировать текст подписи непосредственно в браузере. Это полезно для CMS и интерфейсов, где требуется быстрая правка контента.
<figure>
<img src="chart.png" alt="График продаж">
<figcaption contenteditable="true">
Рисунок 1. Динамика продаж за квартал
</figcaption>
</figure>
Допустимые значения:
| Значение | Поведение | Применение |
|---|---|---|
true |
Разрешает редактирование | Для интерактивных подписей |
false |
Запрещает редактирование | По умолчанию |
inherit |
Наследует от родителя | Для вложенных структур |
Пример с сохранением изменений:
<figure id="editable-figure">
<img src="diagram.jpg" alt="Диаграмма">
<figcaption contenteditable="true" class="editable-caption">
Рисунок 2. Архитектура системы
</figcaption>
</figure>
<button onclick="saveCaption()">Сохранить изменения</button>
<script>
function saveCaption() {
const caption = document.querySelector('.editable-caption');
alert('Новый текст: ' + caption.innerText);
// Отправка на сервер...
}
</script>
Стилизация редактируемого поля:
<style>
[contenteditable="true"] {
padding: 8px;
border: 1px dashed #ccc;
background: #f9f9f9;
}
[contenteditable="true"]:focus {
outline: 2px solid #4CAF50;
background: #fff;
}
</style>
<figure>
<img src="photo.jpg" alt="Фото">
<figcaption contenteditable="true">
Нажмите, чтобы изменить подпись
</figcaption>
</figure>
Особенности работы:
- Поддерживается всеми современными браузерами
- Не изменяет исходный HTML-код страницы
- Для сохранения изменений требуется JavaScript
- Можно комбинировать с execCommand для форматирования
Ограничения:
- Изменения не сохраняются автоматически
- Ограниченные возможности форматирования
- Может конфликтовать с некоторыми CSS-стилями
- Требует дополнительной обработки для сохранения
Примечание: Хотя contenteditable предоставляет простой способ сделать подписи редактируемыми, для сложных CMS лучше использовать специализированные редакторы (TinyMCE, CKEditor). Для сохранения изменений обязательно реализуйте серверную часть.