จะเขียนคำบรรยายใต้ภาพได้อย่างไร?


126

ฉันมีสองภาพที่ต้องเก็บไว้ในบรรทัด ฉันต้องการเขียนคำบรรยายใต้ภาพแต่ละภาพ

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

ฉันจะใช้งานได้อย่างไร?


8
@ceejayoz ไม่ต้องพูดถึงสิ่งที่&nbspตรงกันข้ามกับการตั้งค่าระยะขอบหรือใช้เครื่องมือเค้าโครง css อื่น ๆ
jzworkman

แม้ว่าสิ่งนี้จะได้รับคำตอบเป็นหลักวิธีเดียวที่ฉันพบว่าจะได้คำอธิบายภาพเพื่อให้พอดีกับความกว้างของภาพแบบอินไลน์คือการฮาร์ดโค้ดคุณสมบัติความกว้างบนกระดาษห่อหุ้มหรือคำอธิบายภาพ
MyNameIsKo

2
@McGarnagle ไม่ได้แก้ไขรหัสความหมายในโพสต์ของคนอื่น การจัดรูปแบบทำได้ดี (เว้นแต่จะเป็น python) แต่เนื้อหาโค้ดทั้งหมดมีความสำคัญ! ขอบคุณสำหรับการแก้ไขของคุณโพสต์ jxworkmans ดูไม่มีความหมาย และจริงๆการแก้ไขรหัสผิดในคำถามเป็นเรื่องไร้สาระที่สมบูรณ์ แล้วจะมีคำตอบอย่างไร?
Tomáš Zato - คืนสถานะ Monica

คำตอบ:


275

แท็กรูปและคำอธิบายภาพ :

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

ต้องรัก HTML5


ดูตัวอย่าง


1
คุณจะต้องใช้ HTML5 shim สำหรับ IE ส่วนใหญ่
ceejayoz

10
แท็กเหล่านั้นไม่ได้ช่วย แต่อย่างใด มันเป็นเพียงมาร์กอัปจำลองและคุณต้องทำงานทั้งหมดใน CSS (และ / หรือแท็ก HTML อื่น ๆ ) และคุณต้องมีการดำเนินการเพิ่มเติมเพื่อสร้าง IE เวอร์ชันเก่าให้จดจำได้แม้จะเป็นแท็กจำลอง ดังนั้นจึงใช้งานง่ายกว่าdivหรือspan.
Jukka K. Korpela

15
@ JukkaK.Korpela แท็กเหล่านี้สำคัญมาก stackoverflow.com/a/17272444/756329และhtml5doctor.com/lets-talk-about-semantics
Joseph Hansen

3
ปัญหาคือ: [figures] can be moved to another page or to an appendix without affecting the main flow. <figure>และ<figcaption>ไม่ใช่การแทนที่ด้วยวัตถุประสงค์ทั่วไปสำหรับรูปภาพที่มีคำบรรยาย พวกเขาเพียง แต่นำไปใช้กับตัวเลข หากคุณ (เช่น) มีวิธีการทีละขั้นตอนซึ่งประกอบด้วยย่อหน้าที่ผสมกับภาพถ่ายที่มีคำบรรยายภาพอาจเป็นเรื่องสำคัญที่จะต้องนำเสนอรูปภาพในช่วงแบ่งย่อหน้าเดียวกันตามที่กำหนดไว้ใน html ดังนั้น<figure>จะใช้ไม่ได้ที่นี่ (ตามที่ฉันเข้าใจ)
Ponkadoodle

ฉันขอเสริมว่าบรรทัดเหล่านี้ไม่จำเป็นต้องใส่คำบรรยายใต้ภาพเสมอไป HTML ที่ระบุนี้อธิบายถึงเนื้อหา แต่รูปลักษณ์จะได้รับผลกระทบ / กำหนดโดย 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>

ซออยู่ที่นี่


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

ใส่รูปภาพ - สมมติว่ามีความกว้าง 140px - ภายในลิงก์:

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

จากนั้นใส่คำอธิบายภาพใน a และให้ความกว้างน้อยกว่าภาพของคุณในขณะที่อยู่ตรงกลาง:

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

ฉันห่อรูปภาพพร้อมคำบรรยายไว้ในลิงก์เพื่อไม่ให้ข้อความใดสามารถผลักดันคำบรรยายออกไปได้: คำบรรยายนั้นเชื่อมโยงกับรูปภาพโดยใช้ลิงก์ นี่คือตัวอย่าง: http://www.alphaeducational.com/p/okay.html


1
<div>ไม่อนุญาตให้บล็อกแท็กเช่นในแท็กแบบอินไลน์เช่น<a>- คุณควรใช้<span>สำหรับคำอธิบายภาพ
mindplay.dk

การแทนที่ <div> ด้วย <span> ล้มเหลวโดยสิ้นเชิงในตัวอย่างของ @ TheAlpha ดูเหมือนว่าคุณต้องการ <div>
ปิแอร์

@ mindplay.dk ฉันคิดว่าเนื่องจากaรูปแบบเนื้อหาของแท็กมีความโปร่งใสจึงสามารถยอมรับเด็ก ๆ ที่แท็กหลักสามารถทำได้ (ยกเว้นเนื้อหาแบบโต้ตอบ) ช่วยแก้ให้ด้วยนะถ้าฉันผิด? ฉันต้องการที่จะเรียนรู้. w3.org/TR/html5/text-level-semantics.html#the-a-element
Chris Bier

2

CSS คือเพื่อนของคุณ ไม่จำเป็นต้องมีแท็กกลาง (ไม่ต้องพูดถึงมันค่อนข้างเสื่อมราคา) หรือช่องว่างที่ไม่ทำลายมากเกินไป นี่คือตัวอย่างง่ายๆ:

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

สำหรับภาพที่ตอบสนอง คุณสามารถเพิ่มแท็กรูปภาพและแหล่งที่มาภายในแท็กรูป

<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

เพื่อให้ถูกต้องตามความหมายมากขึ้นและตอบคำถามดั้งเดิมของ OPs เกี่ยวกับการจัดแนวเคียงข้างกันฉันจะใช้สิ่งนี้:

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>แท็กใน HTML5 ช่วยให้คุณป้อนข้อความลงในภาพของคุณตัวอย่างเช่น:

<figcaption>
Your text here
</figcaption>.

จากนั้นคุณสามารถใช้ CSS เพื่อวางตำแหน่งข้อความที่ควรจะอยู่บนรูปภาพ


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

รูปแบบตามที่ต้องการ


6
ฉันจะไม่ทำแบบนี้ บุคคลนั้นกำลังขอคำแนะนำในการนำเสนอไม่ใช่วิธีการแสดงเนื้อหาในรูปแบบตาราง
Mike Kormendy
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.