【问题标题】:Center Text Below Image in Table表格中图像下方的中心文本
【发布时间】:2019-10-06 08:05:52
【问题描述】:

我构建了一个 HTML 表格并将其中的图像居中(表 1 示例)。 图像将是一个链接,但文本不会是一个链接。 我需要一些帮助将与图像位于同一“td”标签中的文本/标题居中。

我包含了表 2 的代码,但这只是另一个表的示例,该表的内容完全位于您在表 1 中看到的图像下方。我不想要两个表,因为文本在图像下方太远。我需要文本更接近它上面的图像。

我只想要一张表...表 1。我需要一些帮助,在每张图片正下方添加内容/文本/标题。我在表 1 的第一个 td 中添加了一个 p 标记,但这不起作用。

我已经尝试查看其他表格和 css 示例,但我还没有得到好的结果。 任何帮助/建议将不胜感激!

我尝试添加不同的 CSS 样式,包括边距、填充、文本居中对齐等等... 到目前为止,我无法成功地将文本置于图像正下方。

这张图片是我想要实现的:

表 1(正确居中的图像示例)

<div>
  <table>
    <tr>
      <td style="text-align: center;">
        <a href="#"><img style="width: 70%; float: left; margin: 25px;" src="https://www.website.com/images/image1.png" /></a>
        <p style="font- 
    size:24px;">CONTENT</p>
      </td>

      <td style="text-align: center;">
        <a href="#"><img style="width:70%; float: left; margin: 25px;" src="https://www.website.com/images/image2.png" /></a>
      </td>

      <td style="text-align: center;">
        <a href="#"><img style="width: 70%; float: left; margin: 25px;" src="https://www.website.com/images/image3.png" /></a>
      </td>

      <td style="text-align: center;">
        <a href="#"><img style="width: 70%; float: left; margin: 25px;" src="https://www.website.com/images/image4.png" /></a>
      </td>

      <td style="text-align: center;">
        <a href="#"><img style="width: 70%; float: left; margin: 25px;" src="https://www.website.com/images/image5.png" /></a>
      </td>
    </tr>
  </table>
</div>

表 2(内容居中的示例...此内容在图像下方完全居中,但由于垂直间距太大,我不想要两个表)

<div>
  <table>
    <tr style="font-size:24px;">
      <td style="text-align: center;">
        <span style="width: 70%; float: left; margin: 25px;">CONTENT 1</span>
      </td>
      <td style="text-align: center;">
        <span style="width: 70%; float: left; margin: 25px;">CONTENT 2</span>
      </td>
      <td style="text-align: center;">
        <span style="width: 70%; float: left; margin: 25px;">CONTENT 3</span>
      </td>
      <td style="text-align: center;">
        <span style="width: 70%; float: left; margin: 25px;">CONTENT 4</span>
      </td>
      <td style="text-align: center;">
        <span style="width: 70%; float: left; margin: 25px;">CONTENT 5</span>
      </td>
    </tr>
  </table>
</div>

【问题讨论】:

  • 如果你想让图片居中,为什么float:left?此外,图像上的margin 25px 似乎将它们推到单元格的右侧。删除边距和浮动,由于text-align: center,它们会自动居中。您可以在表格单元格中使用padding:25px 控制图像周围的空间。
  • 那么您要解决的具体问题是什么?表 1 似乎确实将图像作为链接,并在其下方居中放置了一个文本。
  • float:left 和 margin: 25px 都用于帮助收紧每个图像/文本 td 元素之间的空间。我需要这些元素更紧密地结合在一起。我可以让标题在图片下方居中,但是如果其中一个标题的字符太多,那么该 td 部分与其他 td 元素不相符。
  • 使用两个表格(表格 1 用于图像,表格 2 用于内容/标题)有助于防止在标题字符过多且 td 元素不再与其他 td 元素水平对齐时出现任何问题,但是我在垂直间距方面遇到了问题(标题在每张图片下方太远)

标签: html css html-table


【解决方案1】:

您需要使用的是图形元素和 figcaption 中的文本/链接。 figcaption 可以是 figure 元素中的第一个子元素或最后一个子元素(实际上意味着它可以放置在图像之前或之后。

figure a img {
 width: 70%;
}
<div>
  <table>
    <tr>
      <td style="text-align: center;">
       <figure>
         <a href="#">
           <img src="https://via.placeholder.com/150" />
         </a>
         <figcaption>Content</figcaption>
       </figure>
      </td>
      <td style="text-align: center;">
       <figure>
         <a href="#">
           <img src="https://via.placeholder.com/150" />
         </a>
         <figcaption>Content</figcaption>
       </figure>
      </td>
      <td style="text-align: center;">
       <figure>
         <a href="#">
           <img src="https://via.placeholder.com/150" />
         </a>
         <figcaption>Content</figcaption>
       </figure>
      </td>
     </tr>
   </table>
</div>

【讨论】:

    【解决方案2】:

    当我加载您的代码时,它似乎居中很好,除了图像上的float:left 可以将其丢弃(请参阅my example。右侧的图像向左浮动并且看起来不居中)。

    如果您仍然想要图像下方的文本,则不需要float:left,因为这会使图像位于其后任何元素的左侧。根据图片大小,带有 CONTENT 文本的段落将移到图片旁边而不是图片下方。

    确实最好使用外部样式表,因为您的所有内联代码都很难跟踪。另外,图片上的margin:25px会根据margin大小放大或缩小图片:margin扩大或缩小表格单元格,70%的固定宽度使图片随单元格大小移动以保持margin相同。

    别忘了你有 cellspacingcellpadding 属性来调整表格单元格之间的宽度,以及单元格中项目周围的空间:&lt;table cellspacing="15"&gt; 将在单元格之间放置 15 像素的缓冲。

    更新:对于较长的字幕将图像向上推的问题,一个简单的解决方案是将所有字幕放在自己的表格行中。这仍然只使用一个表格,并且可以使用负 CSS 边距调整标题和图像之间的距离。 Example here

    【讨论】:

    • 这是我试图解决的问题的一个很好的解决方案。感谢您的帮助!。
    • 很高兴它有帮助。此外,如果您想调整单元格内的其他边距,您可以使用 margin: -10px 25px 25px 25px 例如将其提高 10 像素,但所有其他边距保持 25 像素。 CSS 中的边距按顺序 上、右、下、左(顺时针)
    【解决方案3】:

    更新后的代码使用 p 标记作为标题,使标题在图像下方居中,但如果标题有太多字符,您会看到 td 元素与其他 td 元素不对齐。

    long character example

    <div>
    <table>
    <tbody><tr>
    
    <td style="text-align: center;"><a href="#"><img style="width: 70%;/* float: left; *//* margin: 25px; */" src="https://www.website.com/images/image1.png" /></a>
    <p style="font-size: 21px; font-weight: bold;">HEADLINE</p> 
    </td>
    
    <td style="text-align: center;"><a href="#"><img style="width:70%;/* float: left; *//* margin: 25px; */" src="https://www.website.com/images/image2.png" /></a>
    <p style="font-size: 21px; font-weight: bold;">LONG HEADLINE</p> 
    </td>
    
    <td style="text-align: center;"><a href="#"><img style="width: 70%;/* float: left; *//* margin: 25px; */" src="https://www.website.com/images/image3.png" /></a>
    <p style="font-size: 21px; font-weight: bold;">HEADLINE</p> 
    </td>
    <td style="text-align: center;"><a href="#"><img style="width: 70%;/* float: left; *//* margin: 25px; */" src="https://www.website.com/images/image4.png" /></a>
    <p style="font-size: 21px; font-weight: bold;">HEADLINE</p> 
    </td>
    
    <td style="text-align: center;"><a href="#"><img style="width: 70%;/* float: left; *//* margin: 25px; */" src="https://www.website.com/images/image5.png" /></a>
    <p style="font-size: 21px; font-weight: bold;">HEADLINE</p> 
    </td>
    
    </tr>
    </tbody></table>
    </div>
    

    【讨论】:

    • 我更新了我的答案和示例,以展示如何使用第二个表格行 &lt;tr&gt; 来更轻松地工作。 CSS 可以根据需要调整所有间距。您甚至可能不需要 float:left 以这种方式破解,这可能会在以后导致问题。
    猜你喜欢
    • 1970-01-01
    • 2012-12-24
    • 2017-02-02
    • 2016-03-11
    • 2021-03-07
    • 1970-01-01
    • 1970-01-01
    • 2020-10-15
    • 2017-01-01
    相关资源
    最近更新 更多