HTML-теги figure
и figcaption
появились в стандарте HTML5 для формирования блока с картинкой и описания к ней. Кроме того, эти теги можно применять для оборачивания блоков кода, рекламы, видео или аудио.
Стандартный вид использования этих тегов таков:
1 2 3 4 |
<figure> <img src="https://picsum.photos/600/300" alt="Random Image"> <figcaption>Random Image</figcaption> </figure> |
На первый взгляд, ничего особенного, и можно было бы обойтись и без этих тегов, воспользовавшись для формирования блока div-ами. Давайте для начала заглянем в код и посмотрим, к каким тегам - блочным или строчным - они относятся. Инспектор свойств (F12
, или CTRL + SHIFT + I
) показывает нам, что и <figure>
, <figcaption>
- это блочные теги:
Поэтому мы можем несколько изменить форматирование нашего блока, определив дополнительные ccs-правила для тегов <figure>
и <figcaption>
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<style> figure { width: 650px; padding: 20px; margin: 10px auto; box-shadow: 0 0 6px rgba(0, 0, 0, .4); } figcaption { font-weight: bold; font-style: italic; text-align: right; color: green; } figure img { border: 2px solid #ccc; padding: 3px; } </style> |
После этого получим уже другой вид той же картинки. Стало намного симпатичней, не так ли?
Эффект увеличения картинки при наведении на figure
Давайте усложним код, добавив эффект увеличения изображения при наведении на figure
. Используем для этого свойство transform: scale()
. Кроме того, спрячем изначально подпись под изображением в теге figcaption
, добавив ему свойство opacity: 0
, и увеличим это свойство до 1
при наведении на figure
. Для плавности добавим анимацию типа transition. В результате получим такой код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
<style> .test{ text-align:center; background: linear-gradient(#000 30%, #0079ff) no-repeat; margin-bottom: 1.3em; } #figure-hover{ display:inline-block; font-size: 18px; color: #222; margin-bottom: 40px; margin-top: 40px; transition: 0.8s; } #figure-hover img{ border: 3px solid #666; box-shadow: 0px 0px 20px 0px #000; margin-bottom: 15px; } #figure-hover figcaption { opacity: 0; text-align:center; transition: opacity 0.8s; } #figure-hover a { text-decoration-style: dotted; color: inherit; } #figure-hover:hover { transform:scale(1.15); } #figure-hover:hover figcaption{ opacity : 1; } </style> <div class="test"> <figure id="figure-hover"> <img src="https://picsum.photos/id/232/600/300" alt=" Night and snow"> <figcaption> Night and snow - Image by id #232 from <a href="https://picsum.photos">picsum.photos</a> </figcaption> </figure> </div> |
В коде для тега figure
задан атрибут id="figure-hover"
. Это сделано для создания различия в примерах, хотя при наличии у вас единственного тега figure на странице или в случае форматирования всех таких тегов в соответствии с приведенным выше кодом необязательно.
Сам пример с увеличивающейся картинкой и появляющимся описанием выглядит так:
Как вы, должно быть, догадались, это далеко не все, что можно сделать с тегами <figure>
и <figcaption>
, используя различные правила css. Поэтому давайте рассмотрим ряд примеров с Codepen, которые раскрывают возможности этих тегов, используя намного больше свойств CSS.
Пример использования тегов figure и figcaption для форматирования элементов code и pre
Кроме применения этих тегов в качестве обертки для картинок, можно использовать их для:
- блочных цитат
- блоков кода
- аудио
- видео
- рекламных объявлений
- стихов
Давайте посмотрим, как можно разместить стихотворение в теге figure
:
Для данного примера были использованы такие стили:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
figure { word-wrap: pre; line-height: 1.5; color: #555; border: 5px double red; padding: 12px; background: #fad5d5; } figcaption { text-indent: 3em; color: #900; margin-top: 10px; } |
Но тут пришли русские "братья" - и у нас не стало ничего - ни работы, ни планов на будущее, ни красивого города, ни многих домов. Уходите с Украины! Звоните своим солдатам, матерям, отцам, друзьям и родственникам - и говорите, что все, кто сейчас находится в Украине - убийцы и смертники! Все ваши солдаты - пушечное мясо! В отличие от россиян, подло вторгшихся на землю Украины в 5 утра 24 февраля 2022 года, украинцы защищают СВОЮ ЗЕМЛЮ, свою Родину! Для нас это - освободительная война! Но даже в самом страшном сне мы не могли подумать, что врагом для нас будут русские люди, с которыми в Харькове у нас столько смешанной крови, сколько сложно найти где-либо еще в пределах СНГ!
Вам врут с экранов телевизоров. Здесь НИКТО не встречает ваших солдат с цветами. Они - враги. И будут врагами до тех пор, пока будут расстреливать наше мирное население и убивать детей. Да, ваши солдаты уже уничтожили массу районов Харькова, Мелитополя, Ирпеня, Изюма, Чугуева, Житомира и Николаева! Ваши Грады бьют по нашим больницам, школам и домам со стариками, женщинами и детьми.
Вам не отмыться от этого позора веками. Уходите из Украины! Выходите на митинги и свергайте своего тирана Путина-Гитлера! Он хуже, чем Гитлер! Он убивает словян вашими руками. Не молчите!
Путину - смерть!!!!!! Пусть сдохнет, как собака!
Рассмотрим пример, который демонстрирует код на JavaScript (используются теги <pre>
и <code>
внутри<figure>
) и описание-пояснение этого кода внутри тега <figcaption>
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
<style> #for-code{ background: #cde; padding: 20px; border: 5px double #3c99ff; } #for-code pre {<span class="webkit-css-property">background</span>: <span class="value">#f1f1f1</span>; } #for-code figcaption {margin-top: 10px; font-style: italic; font-family: serif; } </style> <figure id="for-code"> <pre> <code> var btn = document.querySelector('button'); function random(number) { return Math.floor(Math.random()*(number+1)); } btn.onclick = function() { var rndCol = 'rgb(' + random(255) + ',' + random(255) + ',' + random(255) + ')'; document.body.style.backgroundColor = rndCol; } </code> </pre> <figcaption> Пример кода на JavaScript для обработки события клика на кнопку и случайного изменения цвета фона для body </figcaption> </figure> |
Примеры форматирования изображений с помощью html-тегов figure и figcaption с Codepen
Прежде, чем решить, использовать вам теги figure
и figcaption
в оформлении страниц, вы можете посмотреть, каким образом они были оформлены в примерах на популярном ресурсе codepen.io. Авторы примеров используют в своем коде не только привычную разметку в html и описание свойств в css , но и различные препроцессоры, такие, как Haml, Pug или SCSS. Если код на вкладках для вас непонятен, перейдите по ссылке Edit on Codepen и выберите в меню справа на нужной вкладке View Compiled HTML (Показать скомпилированный HTML) или View Compiled CSS (Показать скомпилированный CSS).
Пример очень симпатичного оформления профиля актера, автора статьи или пользователя
Используем псевдоклассы ::before и ::after для figure
See the Pen Realistic Polaroid Figures by Kyle Foster (@hkfoster) on CodePen.
Автор Kyle Foster
Описание изображения в виде меток
Очень интересный вариант использования тега figcaption
для создания меток показан в примере ниже. Для этого figcaption
содержит внутри несколько вложенных div
-ов, причем и сам figcaption
, и div
-ы внутри него имеют абсолютное позиционирование с разными координатами. В зависимости от размера экрана длина выносной линии для меток изменяется с помощью css-переменной --label-length
.
See the Pen Responsive image labels #CodePenChallenge cpc-figures by Stephen Lee (@abcretrograde) on CodePen.
Автор Stephen Lee
Простая фотогалерея с описаниями
В этом примере текст из описания (<figcaption>
) разбит на 2 строки и выведен поверх фото, размещенного в теге <img>
. Просто и приятно.
See the Pen Image-Gallery with caption - html5-Tag, figure figcaption - responsive by Elen (@ambassador) on CodePen.
Автор lck
Пример форматирования галереи изображений
Галерея изображений, основанная на использовании свойств Flexbox-модели для размещения фото в 3 колонки и на использовании тегов <figure>
и <figcaption>
для отображения изображений и описания к ним. Обратите внимание, что внутри figcaption
размещены 2 div
-a: один для названия изображения, второй - для имени автора этого изображения.
See the Pen Figure & Figcaption: #codepenchallenge by miazura (@miazura) on CodePen.
Автор miazura
Фотогалерея с данными об авторе, просмотрах и загрузках
Еще один вариант фотогалереи позволяет на больших экранах увидеть в теге <figcaption>
только название фото, а при наведении курсора мыши на картинку - данные об авторе , просмотрах и загрузках. На экранах менее 700px все эти данные отображаются сразу. В примере использованы анимации типа transition.
See the Pen Figure & Figcaption #CodePenChallenge by Yanely Ramirez (@yxnely) on CodePen.
Автор Yanely Ramirez
Пример мини-слайдера
В этом примере изображений, размещенных в тегах figure
и снабженных figcaption
, можно просмотреть при скролле страницы вправо за счет использования grid-контейнера. Здесь использован небольшой JS-код на основе библиотеки RELLAX.
See the Pen Parallax image gallery using Figure & Figcaption - #CodePenChallenge by Booligoosh (@Booligoosh) on CodePen.
Автор Booligoosh
Фотогалерея с перемещением картинок
Пример организации страницы с анимированной прокруткой изображений за счет использования свойства @keyframes
и css-трансформации translate3d
. В теге <figcaption>
размещен заголовок h3
с абсолютным позиционированием и свойством mix-blend-mode: screen
.
See the Pen Figure & Figcaption CodePenChallenge by Elen (@ambassador) on CodePen.
Автор parph
Фотогалерея на основе Grid
В этой фотогалерее интересно размещение разных по размеру фото по сетке за счет использования модели Grid. Также здесь использован hover-эффект с всплывающим описанием, немного повернутым за счет использования свойства transform: rotate().
See the Pen Figure + Figcaption by Ryan Mulligan (@hexagoncircle) on CodePen.
Автор Ryan Mulligan
Слайдер на основе тегов figure и figcaption
В этом примере слайдер организован на основе вложенных тегов figure
и figcaption
, а также анимации с помощью css-свойств @keyframes
и animation
.
See the Pen slider(pure css/html) figure & figcaption by Sahebt Alezar (@Sahebt_Alezar) on CodePen.
Автор Sahebt Alezar
Мини-фотогалерея с эффектом печатания текста
Фото загружается с анимацией небольшого покачивания. При наведении на изображение мы видим, как печатается текст, размещенный в теге figcaption
. Для этого используется JavaScript-код на основе jquery.js.
See the Pen Kandinsky. Typing Effect #codepenchallenge by Natalia Kuznetsova (@lindenalee) on CodePen.
Автор Natalia Kuznetsova
Пример, демонстрирующий изменение контента при наведении на фото
Используем псевдоклассы ::before и ::after для figure, а также абсолютное позиционирование и анимацию типа transition при наведении курсора на блок с фотографией, причем фото загружается не в теге <img>
, а с помощью css-свойства background-image для figure.
See the Pen A <figure> with a <figcaption>... and .date that all:hovers by Elen (@ambassador) on CodePen.
Автор Joshua Ward
Пример изображения с выезжающим описанием
При клике на кнопку More
описание, размещенное в коде в теге <figcaption> выезжает вверх. В примере использован svg с фильтром и немного JS-кода на основе jQuery.
See the Pen Figure & Figcaption (CSS only version) by Tobias Glaus (@tobiasglaus) on CodePen.
Автор Tobias Glaus
Описание на обороте изображения
В этом примере для того, чтобы прочитать полное описание фото, необходимо нажать на кнопку Read the back, после чего фото повернется к нам своей "обратной стороной". В коде использованы 3D трансформации и JavaScript.
See the Pen Lazy Loading Fig+Figcaption & Flipping Card by Alex Paul (@alex_paul) on CodePen.
Автор Alex Paul
Описание, появляющееся при наведении курсора мыши на фото
Решение на чистом CSS: мы видим изначально над изображением текст из абзаца, размещенного непосредственно в теге figure
, а полное описание из тега figcaption
читаем после наведения на фото. Эффект появления основан на абсолютном позиционировании, а также на использовании свойства transform
и transition
.
See the Pen Figure & Figcaption #codepenchallenge by Elise (@Elisse) on CodePen.
Автор Elise
Анимированное исчезновение описания картинки
В этом примере внутри тега <figcaption>
текст разбит на несколько span
-ов, которые визуально размещены вверху и внизу картинки при загрузке страницы за счет абсолютного позиционирования. При наведении курсора мыши они скрываются за счет использования css-свойств animation
и @keyframes
. В коде использованы переменные css.
See the Pen Playful CSS figure & figcaption by Piotr Galor (@pgalor) on CodePen.
Автор Piotr Galor
Исчезающее описание
Еще один вариант кода, который не показывает, а наоборот, убирает figcaption
для изображения. Очень приятный hover-эффект, в котором при наведении курсора мыши на картинку описание как бы прячется под нее. Используется jQuery и TweenMax.
See the Pen Playful Figure/Figcaption | #CodePenChallenge by Isman Fromes (@ismanfromes) on CodePen.
Автор Isman Fromes
Эффект разрезанного изображения
За счет использования ряда элементов <div class='captures'>
, css-свойства clip-path
и css-фильтра filter: grayscale(50%)
изначально мы видим картинку внутри тега <figure>
в виде набора вертикальных полос. При наведении курсора мыши изображение становится цельным, цветным, и появляется его описание в теге <figcaption>
.
See the Pen #CodePenChallenge Figure & Figcaption by Elen (@ambassador) on CodePen.
Автор Artem
Анимация при наведении на логотипы
В примере использованы свойства CSS,которые анимируют SVG-изображение при наведении на круг.
See the Pen CSS/SVG Animated Circles by Kyle Edwards (@kyledws) on CodePen.
Несколько интересных hover-эффектов со при наведении на изображение от одного автора
Описание появляется на красном фоне, состоящем из полупрозрачных треугольников.
Автор LittleSnippets.net.
See the Pen #1543 - Image Hover by LittleSnippets.net (@littlesnippets) on CodePen.
Используем белые треугольники для отображения описания.
See the Pen #1401 - Image Hover by LittleSnippets.net (@littlesnippets) on CodePen.
Изображения находятся в кругах и при наведении меняются на иконку. CSS + небольшой код на jQuery.
See the Pen #1566 - Image Hover by LittleSnippets.net (@littlesnippets) on CodePen.
Описание появляется в виде белого прямоугольника. CSS + небольшой код на jQuery.
See the Pen #1321 - Image Hover by LittleSnippets.net (@littlesnippets) on CodePen.
Эффект появления описания в анимированных черных прямоугольниках.
See the Pen #1584 - Image Hover by LittleSnippets.net (@littlesnippets) on CodePen.
Хороший вариант для сайта художников, фотографов или модельеров.
See the Pen #1581 - Image Hover by LittleSnippets.net (@littlesnippets) on CodePen.
Отличный вариант анимированных описаний на разноцветных фонах с использованием css-переменных.
See the Pen Izmir - ImageHover CSS Library - Example 1 by LittleSnippets.net (@littlesnippets) on CodePen.
Интересный эффект для блока с командой. Изображение прявляется при наведении. CSS + небольшой код на jQuery.
See the Pen #1091 - Image with rotating title on hover by LittleSnippets.net (@littlesnippets) on CodePen.
Еще один вариант оформления блока с командой, хотя это и не очень понятно по виду изображений. CSS + небольшой код на jQuery.
See the Pen #1104 - Image hover with slide out title by LittleSnippets.net (@littlesnippets) on CodePen.
Лаконичное описание команды.
See the Pen #1580 - Image Hover by LittleSnippets.net (@littlesnippets) on CodePen.
Следующий пример можно использовать для вывода профиля пользователя.
See the Pen #1578 - Profile Card by LittleSnippets.net (@littlesnippets) on CodePen.
На основе статьи 20 HTML <figure> & <figcaption> with CSS.
Война непопулярна в России. Но и выступать против народ не осмеливается. Кто-то зомбанулся, кто-то думает, что их слишком мало. Мы помогаем чем можем. Кто-то Z-машины бьёт, кто-то саботирует как может, кто-то донатит на ВСУ.
Ждём вашей победы, может, тогда и у нас появится шанс.
Я не кричал "Слава Украине" — ты не кричал, другие кричали. А ты слушал и не возражал.
Но это всё фигня.
Самое интересное в лозунге "Украина понад усе!".
Ты думаешь какой-нибудь соседней, — и не только соседней — стране хочется чтобы Украина стала "понад усе"? )))))
Если "да" — то ты наивный ребёнок.
Украина уже сейчас, не набрав ещё силы, отличается исключительной наглостью и хитрожопостью. А что будет если она, пользуясь метафорой А. Арестовича, станет такой сильной, что будет крыть соседние страны как бык овцу? Кому это надо? — Да никому не надо.
Так что судьба у вас, как у быка на корриде, одна — идти на бой с тореадором. Для потехи публики. А потом на мясо.
Только тот, кто находится внутри этого условного быка увидеть/понять создавшуюся ситуацию не может.
В общем — хотят украинцы и русские этого или нет, но придётся нам убивать друг друга до предпоследнего бандеровца. Предпоследнего, западные партнёры, на расплод оставят.
И вообще — мне нравится А. Арестович. Такое впечатление, что он наглый, уверенный в себе английский агент, у которого всё идёт по плану к намеченной им цели...
Глупо думать, что Украина "стане понад усе" с ее экономической ситуацией.
А вот о причинах этой фразы стоит задуматься. Те, кто ее пишут и говорят - а таких в России очень много, судя по опросам, реально хоть раз видели этого самого бандеровца? Или все уши и мозги забиты российской пропагандой?
Может, для разнообразия посмотрите в зеркало - и увидите в нем фашистов, которые давно имеют имперские замашки, но при этом удивляются наличию микроволновки и ноутбука в украинских хатах?