157 votes

Comment écrire une légende sous une image ?

J'ai deux images qui doivent rester en ligne ; je veux écrire une légende sous chaque image.

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

Comment puis-je le mettre en œuvre ?

8 votes

@ceejayoz sans parler de tous les &nbsp par opposition à la définition d'une marge, par exemple, ou à l'utilisation d'autres outils de mise en page css.

0 votes

Bien que cette question ait été essentiellement traitée, la seule façon que j'ai trouvée pour qu'une légende s'adapte à la largeur d'une image en ligne est de coder en dur la propriété de largeur sur un wrapper ou la légende elle-même.

3 votes

@McGarnagle ne modifie pas le sens du code dans les messages d'autres personnes. La mise en forme est acceptable (sauf si c'est du python), mais le contenu du code est important ! Grâce à votre édition, le message de jxworkmans n'avait aucun sens. Et vraiment, corriger code incorrect sur question est un non-sens total. Quel serait alors l'intérêt des réponses ?

331voto

McGarnagle Points 56802

Figure y Figcaption tags :

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

Il faut aimer le HTML5.


Voir l'échantillon

#container {
    text-align: center;
}
a, figure {
    display: inline-block;
}
figcaption {
    margin: 10px 0 0 0;
    font-variant: small-caps;
    font-family: Arial;
    font-weight: bold;
    color: #bb3333;
}
figure {
    padding: 5px;
}
img:hover {
    transform: scale(1.1);
    -ms-transform: scale(1.1);
    -webkit-transform: scale(1.1);
    -moz-transform: scale(1.1);
    -o-transform: scale(1.1);
}
img {
    transition: transform 0.2s;
    -webkit-transition: -webkit-transform 0.2s;
    -moz-transition: -moz-transform 0.2s;
    -o-transition: -o-transform 0.2s;
}

<div id="container">
    <a href="#">
        <figure>
            <img src="http://lorempixel.com/100/100/nature/1/" width="100px" height="100px" />
            <figcaption>First image</figcaption>
        </figure>
    </a>
    <a href="#">
        <figure>
             <img src="http://lorempixel.com/100/100/nature/2/" width="100px" height="100px" />
            <figcaption>Second image</figcaption>
        </figure>
    </a>
</div>

1 votes

Vous aurez cependant besoin d'une cale HTML5 pour la plupart des applications IE.

13 votes

Ces étiquettes ne sont d'aucune utilité. Ce ne sont que des balises factices, et vous devez faire tout le travail en CSS (et/ou avec d'autres balises HTML). Et il faut une opération supplémentaire pour que les anciennes versions d'IE les reconnaissent même en tant que balises factices. Il est donc plus simple d'utiliser div o span .

18 votes

@JukkaK.Korpela Ces balises sont très importantes. stackoverflow.com/a/17272444/756329 y html5doctor.com/parlons-sémantique

25voto

WereWolf - The Alpha Points 49671

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 violon est ici.

14voto

Pat M Points 2248

Pour les images réactives. Vous pouvez ajouter les balises image et source dans la balise figure.

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

9voto

Susie Points 21

Placez l'image - disons que sa largeur est de 140px - à l'intérieur d'un lien :

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

Ensuite, mettez la légende dans un et donnez-lui une largeur inférieure à celle de votre image, tout en la centrant :

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

Ensuite, dans la balise link, donnez un style au lien pour qu'il ne ressemble plus à un lien. Vous pouvez lui donner la couleur que vous voulez, mais supprimez simplement toute décoration textuelle que vos liens pourraient porter.

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

J'ai enveloppé l'image avec sa légende dans un lien afin qu'aucun texte ne puisse pousser la légende hors du chemin : La légende est liée à l'image par le lien. Voici un exemple : http://www.alphaeducational.com/p/okay.html

2 votes

Les balises de blocage telles que <div> ne sont pas autorisées à l'intérieur de balises en ligne telles que <a> - vous devez utiliser <span> pour les légendes.

0 votes

Le remplacement de <div> par <span> échoue totalement dans l'exemple de @TheAlpha. Il semble que vous ayez besoin de <div>.

0 votes

@mindplay.dk Je pense que parce que la a est transparent, elle peut accepter tous les enfants que la balise parent peut accepter (à l'exception du contenu interactif). Corrigez-moi si je me trompe. Je veux apprendre. w3.org/TR/html5/text-level-semantics.html#the-a-element

8voto

Greg B Points 378
<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>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X