html - TBODY 背景图像也不适用于所有 TD 元素,如何解决?

标签 html css background-image html-table

在 CSS 中声明的 TBODY 背景图像正在应用于 TBODY 中的所有 TD 元素,预计仅应用于 TBODY。

重现:创建一个包含多个 tbody 的表,每个 tbody 包含一些行和单元格。使用 CSS 声明 TBODY 背景图像。我期望的结果是 TBODY 应该显示单个图像作为背景。然而,在 Chrome、Safari、Opera 中,也会看到 TBODY 中的每个 TD 的背景图像都重复(在 Mac 上测试,截至本文发布日期的最新浏览器版本)。它在 Mac 上的 FireFox 中按预期呈现,在 Win10 上的 Edge 上也按预期呈现。

在示例代码中,我希望背景图像(一个 6 像素宽的黑条)显示在第 1,2 和第 4 个 TBODY 而不是第 3 个。发生这种情况,但看到黑条背景图像也应用于 TD 元素,这并不好。这不是预期的行为,因为我希望背景图像位于 TBODY 容器元素的左侧。

有解决办法吗? TBODY 是我想要利用的元素,因为它允许对定义的背景图像进行单个声明以跨越 tbody 中的所有行,使其美观且合乎逻辑。

这确实是一个 Chromium 错误:https://bugs.chromium.org/p/chromium/issues/detail?id=35697

JSFiddle:https://jsfiddle.net/acyeheq6/

table {
  border-collapse: separate;
  border-spacing: 0;
  width: 100%;
}
tbody.tb1 { background-color: lightblue; }
tbody.tb2 { background-color: lightgray; }
tbody td { padding-left: 15px; }
tbody.item {
  background-repeat: no-repeat;
  background-image: url(http://dummyimage.com/6x80/000/fff.png);
  background-position: left top;
}
<table>	 
  <tbody class="item tb1">
    <tr>
      <td>6/22/16</td>
      <td>Lorem Ipsum</td>
      <td>Temporibus autem</td>
    </tr>
    <tr>
      <td colspan="3">Itaque earum rerum hic tenetur</td>
    </tr>
  </tbody>
  <tbody class="item tb2">
    <tr>
      <td>6/19/16</td>
      <td>Lorem Ipsum</td>
      <td>Temporibus autem</td>
    </tr>
    <tr>
      <td colspan="3">Finibus Bonorum et Malorum</td>
    </tr>
  </tbody>
  <tbody class="tb1">
    <tr>
      <td>6/18/16</td>
      <td>Expedita distinctio</td>
      <td>Deserunt mollitia</td>
    </tr>
    <tr>
      <td colspan="3">Doloribus asperiores repellat.</td>
    </tr>
  </tbody>
  <tbody class="item tb2">
    <tr>
      <td>6/17/16</td>
      <td>Lorem Ipsum</td>
      <td>Temporibus autem</td>
    </tr>
    <tr>
      <td colspan="3">similique sunt in culpa qui officia</td>
    </tr>
  </tbody>
</table>

最佳答案

这是background-image 的错误在<tbody>在 Chrome 中。
所以,我认为你可以改变你的方法来实现目标。

如您所述:

In the sample code I expect the backgroung image (a 6px wide black bar) to display in the 1,2 and 4th TBODY and not the 3rd.

和:

FireFox on Mac and OK on Edge on Win10

不在<tbody>中添加背景图片,先在<td>中添加即可每行的元素。

解决方案:更改 CSS 选择器 tbody.item进入tbody.item > tr > td:first-child

关于html - TBODY 背景图像也不适用于所有 TD 元素,如何解决?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38035254/

相关文章:

HTML 问题 : Percentage-sized elements with minimum pixel dimensions

android - Xamarin 表格 : Setting up background image for a page

css - 背景混合模式不适用于移动设备

html - CSS 背景图像很奇怪很奇怪我只是无法得到它

html - Mahara ePortfolio-如何使用 “Some HTML” block 嵌入背景音乐

php - 填充 Html 表上的记录

html - 绝对定位父级内的内联 block 元素的奇怪行为

php - 关于使用 javascript 在 css 中的一些文本样式

css - joomla 网站上两个模块之间的奇怪空间

html - 如何使元素水平和垂直居中