Центрирование и выравнивание ширины тега figcaption на изображении в теге figure
Я провел два дня, пытаясь решить проблему fig / figcation безрезультатно.
У меня есть приложение Django, где пользователи могут отправлять изображения, и я использую теги figure и figcaption для отображения изображения с сопровождающим заголовком. Основная проблема заключается в том, что ширина заголовка превышает ширину изображения.
Я пытаюсь найти способ, чтобы изображение оставалось того же размера, а заголовок соответственно выравнивался по ширине. Я использую Twitter-Бутстрэп также. Я открыт для всех решений. Любой вклад, опыт или советы очень ценятся.
обновлено: это фактический код шаблона HTML и CSS:
<div class="span4 offset2">
{% if story.pic %}
<h2>Image</h2>
<figure width="{{story.pic.width_field}}">
<img class="image"src="{{ story.pic.url }}" width="{{story.pic.width_field}}" alt="some_image_alt_text"/>
{% if story.caption %}
<figcaption>
{{story.caption}}
</figcaption>
{% endif %}
</figure>
{% endif %}
</div>
image {height:auto;}
figure {margin:0; display:table;}
figcaption {display:table-row;
max-width: 30%;
font-weight: bold;}
3 ответов
Оригинальное Решение
figure .image {
width: 100%;
}
figure {
text-align: center;
display: table;
max-width: 30%; /* demo; set some amount (px or %) if you can */
margin: 10px auto; /* not needed unless you want centered */
}
ключ должен установить какой-то max-width
на img
на figure
элемент, если вы можете, то он будет держать его и текста ограничены.
если вы программно считываете ширину
во-первых, это <figure width="{{story.pic.width_field}}">
должно быть <figure style="width: {{story.pic.width_field}};">
.
во-вторых, сделать только этот css (больше ничего не нужно для img
или figcaption
; см. fiddle):
figure {
text-align: center;
margin: 10px auto; /* not needed unless you want centered */
}
действительно маленькие изображения с длинным текстом по-прежнему будут иметь проблемы, как показывает эта скрипка. Чтобы он хотя бы выглядел чистым, вы можете проверить минимальный размер img
а если он слишком маленький (скажем,100px
), то вместо параметра width
на figure
set min-width
до img
размер и установить max-width
до вашего порога 100px
как эта скрипка показывает.
решение этой проблемы-играть со столом и TABLECAPTION. Это всего 2 строки кода.
вы можете увидеть предварительный просмотр данного решения на сайте: http://www.sandrasen.de/projektgebiete/kienheide/
figure {
display: table;
}
figcaption {
display: table-caption; /* aligns size to the table of the figure
caption-side: bottom /* makes the caption appear underneath the image/figure */
}
в HTML5 все довольно просто:
HTML-код
<figure>
<img src="..." >
<figcaption>Caption 1</figcaption>
</figure>
<figure>
<img src="..." >
<figcaption>Caption 2</figcaption>
</figure>
в CSS
figure{
display: inline-block;
}
/* optional, use as required */
figcaption {
max-width: 30%;
caption-side: bottom;
}