这看起来确实是不可能的——除非你专门定义了每个单元格的宽度和高度,这样就违背了使用表格的目的。
可能的解决方案...
RGBA
假设您要使用背景颜色,background-color: rgba(200,200,200,0.5)
如果失败,您始终可以使用回退到纯色。所有顶级浏览器都支持 RGBA,但它不适用于 IE8 及以下版本……
透明PNG
显而易见的简单方法是回退到使用透明 PNG,但这取决于您使用的颜色是预定义的并且相当严格。
使用 -moz-element
另一个让 FireFox 工作的疯狂解决方案(如果您使用背景图像而不是颜色)将使用该background: moz-element()
功能。在这里,您可以在页面上创建您可能需要的每种不同不透明度的隐藏元素,并通过 id 将它们作为背景引用。例如:
<div id="image1" style="background: url(image1.jpg); opacity: 0.5;"></div>
然后在您希望背景出现的元素上引用它:
<td style="background: -moz-element(#image1);"></td>
但是,我不保证这种方法,它相当不雅且特定于浏览器。Tbh 我很惊讶地发现这个问题确实无法使用普通的绝对和相对技巧来解决(尤其是在 FF 中)。
不要我们的表
到目前为止,更多浏览器支持的解决方案是放弃使用表并使用良好的旧 div 和浮点数重新创建表结构。此解决方案的唯一问题是您必须再次定义大多数宽度和高度,并且您将无法实现垂直单元格对齐,除非您回退到像FlexBox这样更具实验性的东西。