¿Cómo escribir un título debajo de una imagen?

126

Tengo dos imágenes que deben mantenerse en línea; Quiero escribir un título debajo de cada imagen.

<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>

¿Cómo puedo implementar?

Samrat Mazumdar
fuente
8
@ceejayoz sin mencionar todo lo &nbspcontrario a establecer un margen o usar otras herramientas de diseño CSS.
jzworkman
Si bien esto se ha respondido esencialmente, la única forma en que he encontrado que un título se ajuste al ancho de una imagen en línea es codificar la propiedad de ancho en un contenedor o el título en sí.
MyNameIsKo
2
@McGarnagle no edita el significado del código en las publicaciones de otras personas. El formateo está bien (bueno, a menos que sea python), ¡pero todo el contenido del código es importante! Gracias a tu edición, la publicación de jxworkmans no tenía sentido. Y realmente, arreglar el código incorrecto en cuestión es una completa tontería. ¿Cuál sería el punto de respuestas entonces?
Tomáš Zato - Restablece a Mónica el

Respuestas:

275

Figura y etiquetas de Figcaption :

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

Tengo que amar HTML5.


Ver muestra

McGarnagle
fuente
1
Sin embargo, necesitará un calce HTML5 para la mayoría de IE.
ceejayoz
10
Esas etiquetas no ayudan de ninguna manera. Son solo marcas ficticias, y debe hacer todo el trabajo en CSS (y / o con otras etiquetas HTML). Y necesita una operación adicional para hacer versiones antiguas de IE para reconocerlas incluso como etiquetas ficticias. Por lo tanto, es más fácil de usar divo span.
Jukka K. Korpela
15
@ JukkaK.Korpela Estas etiquetas son muy importantes. stackoverflow.com/a/17272444/756329 y html5doctor.com/lets-talk-about-semantics
Joseph Hansen
3
El problema es el siguiente: [figures] can be moved to another page or to an appendix without affecting the main flow. <figure>y <figcaption>no son reemplazos de uso general para imágenes con subtítulos. Ellos sólo se aplican a las figuras. Si (por ejemplo) tiene un procedimiento paso a paso que se compone de párrafos entremezclados con fotos subtituladas, puede ser importante que las imágenes se presenten en los mismos saltos de párrafo definidos en el html. Por <figure>lo tanto , no sería aplicable aquí (según tengo entendido).
Ponkadoodle
Añadiría que estas líneas no colocan necesariamente un pie de figura debajo de una imagen. El HTML proporcionado aquí describe el contenido, pero la apariencia se ve afectada / determinada por 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>

Un violín está aquí.

El alfa
fuente
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>
Greg B
fuente
7

Ponga la imagen, digamos que su ancho es 140px, dentro de un enlace:

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

A continuación, coloque el título en a y dele un ancho menor que su imagen, mientras lo centra:

<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 continuación, en la etiqueta del enlace, diseñe el enlace para que ya no se vea como un enlace. Puede darle el color que desee, pero simplemente elimine cualquier decoración de texto que puedan contener sus enlaces.

<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>

Envolví la imagen con su título en un enlace para que ningún texto pudiera apartar el título: el enlace está vinculado a la imagen. Aquí hay un ejemplo: http://www.alphaeducational.com/p/okay.html

Susie
fuente
1
Las etiquetas de bloque como <div>no están permitidas dentro de las etiquetas en línea como <a>: debe usarlas <span>para los subtítulos.
mindplay.dk
Reemplazar <div> con <span> falla totalmente en el ejemplo de @ TheAlpha. Parece que necesitas <div>.
Pierre
@ mindplay.dk Creo que debido a que el amodelo de contenido de la etiqueta es transparente, puede aceptar cualquier elemento secundario que la etiqueta principal pueda (excepto el contenido interactivo). ¿Corrígeme si me equivoco? Quiero aprender. w3.org/TR/html5/text-level-semantics.html#the-a-element
Chris Bier
2

CSS es tu amigo; no hay necesidad de la etiqueta central (sin mencionar que está bastante depreciada) ni los espacios excesivos que no se rompen. Aquí hay un ejemplo simple:

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>
faino
fuente
2

Para imágenes receptivas. Puede agregar la imagen y las etiquetas de origen dentro de la etiqueta de la figura.

<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>
Pat M
fuente
0

Para ser más semánticamente correcto y responder la pregunta original de los OP sobre alinearlos uno al lado del otro, usaría esto:

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/

c7borg
fuente
0

La <figcaption>etiqueta en HTML5 le permite ingresar texto a su imagen, por ejemplo:

<figcaption>
Your text here
</figcaption>.

Luego puede usar CSS para colocar el texto donde debería estar en la imagen.

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

Estilo como se desee.

Jukka K. Korpela
fuente
66
Nunca haria esto. La persona solicita consejos de presentación, no cómo mostrar el contenido en formato tabular.
Mike Kormendy el