如何使用javascript,css和/或者html将文本置于表格中的图片中心?

时间:2020-03-06 14:20:14  来源:igfitidea点击:

如何使用javascript,css和/或者html在表单元格中的图像上居中显示文本?

我有一个HTML表格,其中包含所有大小相同的图像,并且我想在每个图像上居中放置一个文本标签。标签中的文字大小可能会有所不同。水平居中并不困难,但垂直居中则很困难。

附录:我最终不得不使用javascript,使用具有绝对位置的固定大小的div可靠地使文本居中;我只是无法让它以任何其他方式工作

解决方案

我们可以尝试将图像放在背景中。

<table>
    <tr>
        <td style="background: url(myImg.jpg) no-repeat; vertical-align: middle; text-align: center">
            Here is my text
        </td>
    </tr>
</table>

我们只需要在单元格上设置高度和宽度即可。

我将通过CSS将图像设置为单元格的背景,将单元格的大小设置为适当的固定值(再次通过CSS),然后插入文本标签作为单元格内容。默认情况下,表格单元格的内容垂直居中,因此我认为我们不必担心。同样,可以通过CSS轻松设置垂直和水平对齐方式。这种方法之所以有效,是因为我多次使用它。

另一种方法是在表单元格中插入图像和文本,将文本包装在DIV元素中并使用其CSS属性(相对位置和边距),但这在我看来有点棘手。

我们可以使用TD的选项" valign",它可以是top,bottom或者居中...但是据我所知,默认情况下,单元格内容在垂直方向上居中,因此CSS可能使它们以bottom或者top选项显示。

<TABLE><TR valign=center>
  <TD align=center background="some image"> image label </TD>
</TR></TABLE>

在CSS中没有正确的方法(尽管应该这样做)。但这是一种对我有用的方法。

CSS:

#image1, #image1-text, #image1-container {
  overflow: hidden;
  height: 100px;
  width: 100px;
}

#image1 {
  top: -100px;
  position: relative;
  z-index: -1;
}

#image1-text {
  text-align: center;
  vertical-align: middle;
  display: table-cell;
}

HTML:

<div id="image1-container">
    <img src="image.jpeg" id="image1">
    <div id="image1-text">
      hello
    </div>
  </div>

容器中的" image1"和" image1-text"的顺序无关紧要。

这有点麻烦,但它可以在任何地方使用,而不仅仅是在桌子上。但是,它在IE中无法正常工作。它将显示在顶部。但是它可以在FF,Safari和Chrome中运行。尚未在IE8中进行过测试。

对于IE7或者更低版​​本的hack,只会显示1行,但会居中,是在&lt;head>标记内添加以下内容:

<!--[if lte IE 7]>
<style>
  #image1-text {
    line-height: 100px;
  }
</style>
<![endif]-->

感谢大家的建议。

我确实不得不使用javascript,使用具有绝对位置的固定大小的div可靠地使文本居中;我只是无法让它以任何其他方式工作。

我还必须生成隐藏了可见性的文本div,并在页面末尾具有javascript循环,以使其可见并将其放置在适当的表格单元格上

css / html的布局功能中存在一些严重的漏洞,希望这些漏洞将在以后的版本中解决;-)