Как написать подпись под изображением?


126

У меня есть два изображения, которые нужно сохранить в строке; Я хочу написать подпись под каждым изображением.

<center>
   <a href="http://example.com/hello">
       <img src="hello.png" width="100px" height="100px">
   </a>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
   <a href="http://example.com/hi">
       <img src="hi.png" width="100px" height="100px">
   </a>
</center>

Как я могу реализовать?


8
@ceejayoz, не говоря уже обо всем, &nbspв отличие от установки поля или использования других инструментов компоновки css.
jzworkman

Хотя, по сути, на этот вопрос был дан ответ, единственный способ получить заголовок, соответствующий ширине встроенного изображения, - это жестко закодировать свойство width в оболочке или сам заголовок.
MyNameIsKo

2
@McGarnagle не редактирует значение кода в постах других людей. Форматирование в порядке (ну, если это не python), но все содержимое кода важно! Благодаря вашему редактированию сообщение jxworkmans выглядело бессмысленным. И действительно, фиксируя неправильный код в вопросе полный бред. В чем тогда смысл ответов?
Томаш Зато - Восстановите Монику

Ответы:


275

Теги Figure и Figcaption :

<figure>
    <img src='image.jpg' alt='missing' />
    <figcaption>Caption goes here</figcaption>
</figure>

Должен любить HTML5.


Посмотреть образец


1
Однако для большей части IE вам понадобится прокладка HTML5.
ceejayoz

10
Эти теги никоим образом не помогают. Это просто фиктивная разметка, и вам нужно выполнять всю работу в CSS (и / или с другими тегами HTML). И вам понадобится дополнительная операция, чтобы старые версии IE распознавали их даже как фиктивные теги. Так проще использовать divили span.
Юкка К. Корпела


3
Проблема заключается в следующем: [figures] can be moved to another page or to an appendix without affecting the main flow. <figure>и <figcaption>не являются универсальной заменой изображений с подписями. Они относятся только к цифрам. Если у вас (например) есть пошаговое руководство, состоящее из абзацев, смешанных с фотографиями с подписями, может быть важно, чтобы изображения были представлены в тех же разрывах абзаца, что и определено в html. Следовательно <figure>, здесь не применимо (насколько я понимаю).
Ponkadoodle

Я бы добавил, что эти строки не обязательно помещают подпись к рисунку под изображением. Приведенный здесь HTML описывает содержимое, но на внешний вид влияет / определяется CSS.
jvriesem

21

CSS

#images{
    text-align:center;
    margin:50px auto; 
}
#images a{
    margin:0px 20px;
    display:inline-block;
    text-decoration:none;
    color:black;
 }

HTML

<div id="images">
    <a href="http://xyz.com/hello">
        <img src="hello.png" width="100px" height="100px">
        <div class="caption">Caption 1</div>
    </a>
    <a href="http://xyz.com/hi">
        <img src="hi.png" width="100px" height="100px"> 
        <div class="caption">Caption 2</div>
    </a>
</div>

Скрипка здесь.


7
<div style="margin: 0 auto; text-align: center; overflow: hidden;">
  <div style="float: left;">
    <a href="http://xyz.com/hello"><img src="hello.png" width="100px" height="100px"></a>
    caption 1
  </div>
 <div style="float: left;">
   <a href="http://xyz.com/hi"><img src="hi.png" width="100px" height="100px"></a>
   caption 2                      
 </div>
</div>

7

Поместите изображение - допустим, его ширина - 140 пикселей - внутрь ссылки:

<a><img src='image link' style='width: 140px'></a>

Затем поместите подпись в a и сделайте ширину меньше вашего изображения, при этом центрируя ее:

<a>
  <img src='image link' style='width: 140px'>
  <div style='width: 130px; text-align: center;'>I just love to visit this most beautiful place in all the world.</div>
</a>

Затем в теге ссылки измените стиль ссылки так, чтобы она больше не выглядела как ссылка. Вы можете придать ему любой цвет, но просто удалите любое текстовое оформление, которое могут содержать ссылки.

<a style='text-decoration: none; color: orange;'>
  <img src='image link' style='width: 140px'>
  <div style='width: 130px; text-align: center;'>I just love to visit this most beautiful place in all the world.</div>
</a>

Я заключил изображение с его подписью в ссылку, чтобы текст не мог отодвинуть подпись: подпись привязана к картинке по ссылке. Вот пример: http://www.alphaeducational.com/p/okay.html


1
Блочные теги вроде <div>не разрешены внутри встроенных тегов вроде <a>- вы должны использовать <span>для подписей.
mindplay.dk

Замена <div> на <span> полностью не выполняется в примере @ TheAlpha. Похоже, вам нужен <div>.
Пьер,

@ mindplay.dk Я думаю, поскольку aмодель содержимого тега прозрачна, она может принимать любых дочерних элементов, которых может родительский тег (кроме интерактивного содержимого). Поправьте меня если я ошибаюсь? Я хочу учиться. w3.org/TR/html5/text-level-semantics.html#the-a-element
Крис Бир,

2

CSS - ваш друг; нет необходимости ни в центральном теге (не говоря уже о том, что он довольно изношен), ни в лишних неразрывных пробелах. Вот простой пример:

CSS

.images {
    text-align:center;
}
.images img {
    width:100px;
    height:100px;
}
.images div {
    width:100px;
    text-align:center;
}
.images div span {
    display:block;
}
.margin_right {
    margin-right:50px;
}
.float {
    float:left;
}
.clear {
    clear:both;
    height:0;
    width:0;
}

HTML

<div class="images">
    <div class="float margin_right">
        <a href="http://xyz.com/hello"><img src="hello.png" width="100px" height="100px" /></a>
        <span>This is some text</span>
    </div>
    <div class="float">
        <a href="http://xyz.com/hi"><img src="hi.png" width="100px" height="100px" /></a>
        <span>And some more text</span>
    </div>
    <span class="clear"></span>
</div>

2

Для отзывчивых изображений. Вы можете добавить теги изображения и источника в теги рисунка.

<figure>
  <picture>
    <source media="(min-width: 750px)" srcset="images/image_2x.jpg"/>
    <source media="(min-width: 500px)" srcset="images/image.jpg" />
    <img src="images.jpg" alt="An image">
  </picture>
  <figcaption>Caption goes here</figcaption>
</figure>

0

Чтобы быть более семантически правильным и ответить на исходный вопрос OP о выравнивании их бок о бок, я бы использовал это:

HTML

<div class="items">
<figure>
    <img src="hello.png" width="100px" height="100px">
    <figcaption>Caption 1</figcaption>
</figure>
<figure>
    <img src="hi.png" width="100px" height="100px"> 
    <figcaption>Caption 2</figcaption>
</figure></div>

CSS

.items{
text-align:center;
margin:50px auto;}


.items figure{
margin:0px 20px;
display:inline-block;
text-decoration:none;
color:black;}

https://jsfiddle.net/c7borg/jLzc6h72/3/


0

<figcaption>Тег в HTML5 позволяет вводить текст в изображение, например:

<figcaption>
Your text here
</figcaption>.

Затем вы можете использовать CSS, чтобы разместить текст там, где он должен быть на изображении.


-3
<table>
<tr><td><img ...><td><img ...>
<tr><td>caption1<td>caption2
</table>

Стиль по желанию.


6
Я бы никогда этого не сделал. Человек просит совета по презентации, а не того, как отображать контент в табличном формате.
Майк Корменди
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.