Jak napisać podpis pod obrazkiem?


126

Mam dwa obrazy, które muszą pozostać w tekście; Chcę napisać podpis pod każdym obrazem.

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

Jak mogę wdrożyć?


8
@ceejayoz nie wspominając już o wszystkich, w &nbspprzeciwieństwie do ustawiania marginesów lub korzystania z innych narzędzi układu CSS.
jzworkman

Chociaż zasadniczo udzielono odpowiedzi, jedynym sposobem, w jaki udało mi się uzyskać podpis pasujący do szerokości obrazu w wierszu, jest trwałe zakodowanie właściwości width w opakowaniu lub samym podpisie.
MyNameIsKo

2
@McGarnagle nie edytuje znaczenia kodu w postach innych osób. Formatowanie jest OK (no chyba, że ​​jest to Python), ale cała zawartość kodu jest ważna! Dzięki twojej edycji post jxworkmans wyglądał bez znaczenia. I rzeczywiście, ustalające niewłaściwy kod w pytaniu jest kompletny nonsens. Jaki byłby sens odpowiedzi?
Tomáš Zato - Przywróć Monikę

Odpowiedzi:


275

Tagi Figure i Figcaption :

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

Pokochaj HTML5.


Zobacz przykład


1
Będziesz jednak potrzebować podkładki HTML5 dla większości IE.
ceejayoz

10
Te tagi w żaden sposób nie pomagają. To tylko fikcyjne znaczniki i musisz wykonać całą pracę w CSS (i / lub z innymi tagami HTML). Potrzebujesz dodatkowej operacji, aby stare wersje IE rozpoznawały je nawet jako fikcyjne tagi. Dlatego łatwiej jest użyć divlub span.
Jukka K. Korpela


3
Problem jest następujący: [figures] can be moved to another page or to an appendix without affecting the main flow. <figure>i <figcaption>nie są zamiennikami ogólnego przeznaczenia dla obrazów z podpisami. Dotyczą one tylko liczb. Jeśli (na przykład) masz instrukcję krok po kroku, która składa się z akapitów pomieszanych ze zdjęciami z podpisami, może być ważne, aby obrazy były prezentowane z tymi samymi podziałami akapitu, jak zdefiniowano w HTML. W związku z <figure>tym nie miałoby tu zastosowania (jak rozumiem).
Ponkadoodle

Dodałbym, że te linie niekoniecznie umieszczają podpis postaci pod obrazem. Podany tutaj kod HTML opisuje zawartość, ale na wygląd wpływa / określa 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>

Jest tu skrzypce.


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

Umieść obraz - powiedzmy, że ma szerokość 140 pikseli - wewnątrz linku:

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

Następnie umieść podpis w a i nadaj mu szerokość mniejszą niż obraz, wyśrodkowując go:

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

Następnie w tagu łącza nadaj mu styl tak, aby nie wyglądał już jak łącze. Możesz nadać mu dowolny kolor, ale po prostu usuń dekorację tekstu, którą mogą nosić twoje linki.

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

Obraz z podpisem zawiniłem w łącze, aby żaden tekst nie mógł zepchnąć podpisu z drogi: Podpis jest powiązany z obrazem za pomocą linku. Oto przykład: http://www.alphaeducational.com/p/okay.html


1
Tagi blokowe, takie jak <div>nie są dozwolone w tagach wbudowanych, na przykład <a>- należy używać <span>do podpisów.
mindplay.dk

Zamiana <div> na <span> kończy się niepowodzeniem w przykładzie @ TheAlpha. Wygląda na to, że potrzebujesz <div>.
Pierre

@ mindplay.dk Myślę, że ponieważ amodel zawartości tagu jest przezroczysty, może akceptować wszystkie elementy podrzędne, które może mieć tag nadrzędny (z wyjątkiem zawartości interaktywnej). Popraw mnie, jeśli się mylę? Chcę się uczyć. w3.org/TR/html5/text-level-semantics.html#the-a-element
Chris Bier,

2

CSS to twój przyjaciel; nie ma potrzeby stosowania środkowego znacznika (nie wspominając o tym, że jest dość zdeprecjonowany) ani nadmiernych nierozdzielających spacji. Oto prosty przykład:

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

Elastyczne obrazy. Możesz dodać zdjęcie i znaczniki źródłowe w tagu figury.

<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

Aby być bardziej poprawnym semantycznie i odpowiedzieć na oryginalne pytanie PO dotyczące wyrównywania ich obok siebie, użyłbym tego:

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>Tag w HTML5 umożliwia wprowadzanie tekstu do obrazu, na przykład:

<figcaption>
Your text here
</figcaption>.

Następnie możesz użyć CSS, aby umieścić tekst w miejscu, w którym powinien się znajdować na obrazie.


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

Styl według uznania.


6
Nigdy bym tego nie zrobił. Osoba prosi o poradę dotyczącą prezentacji, a nie jak wyświetlać treść w formie tabelarycznej.
Mike Kormendy
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.