Come scrivere una didascalia sotto un'immagine?


126

Ho due immagini che devono essere mantenute in linea; Voglio scrivere una didascalia sotto ogni immagine.

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

Come posso implementare?


8
@ceejayoz per non parlare del &nbspcontrario di impostare un margine o usare altri strumenti di layout CSS.
jzworkman,

Anche se a questo si è essenzialmente risposto, l'unico modo in cui ho trovato una didascalia per adattarsi alla larghezza di un'immagine in linea è di codificare la proprietà larghezza su un wrapper o la didascalia stessa.
MyNameIsKo

2
@McGarnagle non modifica il significato del codice nei post di altre persone. La formattazione è OK (beh, a meno che non sia Python), ma tutto il contenuto del codice è importante! Grazie alla tua modifica, il post di jxworkmans sembrava insignificante. E davvero, riparare codice sbagliato in questione è una totale assurdità. Quale sarebbe il punto di risposta allora?
Tomáš Zato - Ripristina Monica il

Risposte:


275

Tag Figure e Figcaption :

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

Devi amare HTML5.


Vedi esempio


1
Tuttavia, avrai bisogno di uno spessore HTML5 per la maggior parte di IE.
Ceejayoz,

10
Quei tag non aiutano in alcun modo. Sono solo markup fittizi e devi fare tutto il lavoro in CSS (e / o con altri tag HTML). E hai bisogno di un'operazione extra per creare vecchie versioni di IE per riconoscerle anche come tag fittizi. Quindi è più semplice da usare divo span.
Jukka K. Korpela,

15
@ JukkaK.Korpela Questi tag sono molto importanti. stackoverflow.com/a/17272444/756329 e html5doctor.com/lets-talk-about-semantics
Joseph Hansen

3
Il problema è questo: [figures] can be moved to another page or to an appendix without affecting the main flow. <figure>e <figcaption>non sono sostituzioni generiche per immagini con didascalie. Si applicano solo alle figure. Se (ad esempio) si dispone di una procedura dettagliata composta da paragrafi mescolati con foto con didascalia, potrebbe essere importante che le immagini vengano presentate nelle stesse interruzioni di paragrafo definite nell'html. Quindi <figure>non sarebbe applicabile qui (come ho capito).
Ponkadoodle,

Aggiungerei che queste linee non posizionano necessariamente una didascalia sotto un'immagine. L'HTML fornito qui descrive il contenuto, ma l'aspetto è influenzato / determinato dai 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 violino è qui.


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

Metti l'immagine - diciamo che la sua larghezza è 140px - all'interno di un link:

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

Quindi, inserisci la didascalia in a e assegnale una larghezza inferiore all'immagine, centrandola:

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

Successivamente, nel tag del collegamento, modellare il collegamento in modo che non sembri più un collegamento. Puoi dargli qualsiasi colore tu voglia, ma basta rimuovere qualsiasi decorazione di testo che i tuoi link possano portare.

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

Ho avvolto l'immagine con la sua didascalia in un collegamento in modo che nessun testo possa allontanare la didascalia: la didascalia è legata all'immagine dal collegamento. Ecco un esempio: http://www.alphaeducational.com/p/okay.html


1
I tag di blocco come <div>non sono consentiti all'interno di tag in linea come <a>- è necessario utilizzare <span>per i sottotitoli.
mindplay.dk,

La sostituzione di <div> con <span> fallisce totalmente nell'esempio di @ TheAlpha. Sembra che tu abbia bisogno di <div>.
Pierre,

@ mindplay.dk Penso che, poiché il amodello di contenuto del tag è trasparente, può accettare tutti i figli che il tag genitore può (tranne che per il contenuto interattivo). Correggimi se sbaglio? Voglio imparare. w3.org/TR/html5/text-level-semantics.html#the-a-element
Chris Bier

2

CSS è tuo amico; non è necessario né il tag centrale (per non parlare del fatto che è piuttosto ammortizzato) né gli spazi non interrompibili eccessivi. Qui c'è un semplice esempio:

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

Per immagini reattive. È possibile aggiungere i tag immagine e sorgente all'interno del tag 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>

0

Per essere più semanticamente corretto e rispondere alla domanda originale dei PO sull'allineamento affiancato, vorrei usare questo:

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

Il <figcaption>tag in HTML5 consente di inserire testo nell'immagine, ad esempio:

<figcaption>
Your text here
</figcaption>.

È quindi possibile utilizzare CSS per posizionare il testo nel punto in cui dovrebbe trovarsi sull'immagine.


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

Stile come desiderato.


6
Non lo farei mai. La persona chiede consigli sulla presentazione e non su come visualizzare i contenuti in formato tabulare.
Mike Kormendy,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.