Wie schreibe ich eine Beschriftung unter ein Bild?

126

Ich habe zwei Bilder, die inline gehalten werden müssen; Ich möchte unter jedem Bild eine Beschriftung schreiben.

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

Wie kann ich implementieren?

Samrat Mazumdar
quelle
8
@ceejayoz ganz zu schweigen von all dem, anstatt &nbspeinen Rand zu setzen oder andere CSS-Layout-Tools zu verwenden.
jzworkman
Obwohl dies im Wesentlichen beantwortet wurde, besteht die einzige Möglichkeit, eine Beschriftung für die Breite eines Inline-Bilds zu erhalten, darin, die width-Eigenschaft auf einem Wrapper oder die Beschriftung selbst fest zu codieren.
MyNameIsKo
2
@McGarnagle bearbeitet keine Codebedeutung in den Posts anderer Personen. Das Formatieren ist in Ordnung (es sei denn, es ist Python), aber alle Code-Inhalte sind wichtig! Dank Ihrer Bearbeitung sah der Beitrag von jxworkmans bedeutungslos aus. Und wirklich, Festsetzung falschen Code in Frage ist völliger Unsinn. Was wäre dann der Sinn der Antworten?
Tomáš Zato - Wiedereinsetzung Monica

Antworten:

275

Abbildung und figcaption tags:

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

Ich muss HTML5 lieben.


Siehe Beispiel

McGarnagle
quelle
1
Für den größten Teil des IE benötigen Sie jedoch einen HTML5-Shim.
Ceejayoz
10
Diese Tags helfen in keiner Weise. Sie sind nur Dummy-Markups, und Sie müssen die gesamte Arbeit in CSS (und / oder mit anderen HTML-Tags) erledigen. Und Sie benötigen eine zusätzliche Operation, um alte Versionen des IE so zu gestalten, dass sie auch als Dummy-Tags erkannt werden. So ist es einfacher zu bedienen divoder span.
Jukka K. Korpela
15
@ JukkaK.Korpela Diese Tags sind sehr wichtig. stackoverflow.com/a/17272444/756329 und html5doctor.com/lets-talk-about-semantics
Joseph Hansen
3
Das Problem ist folgendes : [figures] can be moved to another page or to an appendix without affecting the main flow. <figure>und <figcaption>sind kein universeller Ersatz für Bilder mit Bildunterschriften. Sie gelten nur für Zahlen. Wenn Sie (zum Beispiel) eine schrittweise Anleitung haben, die sich aus Absätzen zusammensetzt, die mit Fotos mit Bildunterschriften vermischt sind, kann es wichtig sein, dass die Bilder in denselben Absatzumbrüchen wie im HTML-Code dargestellt werden. Daher <figure>wäre hier nicht anwendbar (wie ich verstehe).
Ponkadoodle
Ich möchte hinzufügen, dass diese Zeilen nicht unbedingt eine Bildunterschrift unter einem Bild platzieren. Der hier angegebene HTML-Code beschreibt den Inhalt, aber das Erscheinungsbild wird durch CSS beeinflusst / bestimmt.
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>

Eine Geige ist hier.

Das Alpha
quelle
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.
quelle
7

Fügen Sie das Bild - sagen wir, die Breite beträgt 140 Pixel - in einen Link ein:

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

Fügen Sie als Nächstes die Beschriftung in a ein und geben Sie ihr eine Breite, die kleiner als Ihr Bild ist, während Sie sie zentrieren:

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

Gestalten Sie den Link im Link-Tag so, dass er nicht mehr wie ein Link aussieht. Sie können ihm jede gewünschte Farbe geben, aber entfernen Sie einfach jede Textdekoration, die Ihre Links tragen können.

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

Ich habe das Bild mit seiner Beschriftung in einen Link eingeschlossen, damit kein Text die Beschriftung aus dem Weg räumen kann: Die Beschriftung ist über den Link mit dem Bild verbunden. Hier ist ein Beispiel: http://www.alphaeducational.com/p/okay.html

Susie
quelle
1
Block-Tags wie <div>sind in Inline-Tags wie nicht zulässig <a>- Sie sollten sie <span>für die Beschriftungen verwenden.
mindplay.dk
Das Ersetzen von <div> durch <span> schlägt im Beispiel von @ TheAlpha vollständig fehl. Sieht so aus, als ob Sie <div> benötigen.
Pierre
@ mindplay.dk Ich denke, da das aInhaltsmodell des Tags transparent ist, kann es alle untergeordneten Elemente akzeptieren, die das übergeordnete Tag kann (außer für interaktive Inhalte). Korrigieren Sie mich, wenn ich falsch liege? Ich will lernen. w3.org/TR/html5/text-level-semantics.html#the-a-element
Chris Bier
2

CSS ist dein Freund; Es ist weder das Center-Tag (ganz zu schweigen davon, dass es stark abgeschrieben ist) noch die übermäßigen, nicht unterbrechenden Leerzeichen erforderlich. Hier ist ein einfaches Beispiel:

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

Für reaktionsschnelle Bilder. Sie können die Bild- und Quell-Tags innerhalb des Figuren-Tags hinzufügen.

<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.
quelle
0

Um semantisch korrekter zu sein und die ursprüngliche Frage des OP zu beantworten, wie man sie nebeneinander ausrichtet, würde ich Folgendes verwenden:

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

Mit dem <figcaption>Tag in HTML5 können Sie beispielsweise Text in Ihr Bild eingeben:

<figcaption>
Your text here
</figcaption>.

Sie können dann CSS verwenden, um den Text dort zu positionieren, wo er auf dem Bild sein soll.

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

Stil wie gewünscht.

Jukka K. Korpela
quelle
6
Ich würde das niemals tun. Die Person bittet um Ratschläge zur Präsentation, nicht um die Anzeige von Inhalten in Tabellenform.
Mike Kormendy