opacity
样式会影响整个元素及其内部的所有内容。正确的做法是使用 rgba 背景色。
CSS 相当简单:
.myelement {
background: rgba(200, 54, 54, 0.5);
}
...其中前三个数字是背景颜色的红色、绿色和蓝色值,第四个数字是“alpha”通道值,它的工作方式与opacity
值相同。
有关更多信息,请参见此页面:http://css-tricks.com/rgba-browser-support/
缺点是这在IE8或更低版本中不起作用。我上面链接的页面还列出了一些其他不支持该功能的浏览器,但它们都非常老旧;除了IE6/7/8之外,所有当前使用的浏览器都支持rgba颜色。
好消息是,您可以使用名为CSS3Pie的hack强制IE也支持这一点。 CSS3Pie将许多现代CSS3功能添加到旧版IE中,包括rgba背景颜色。
要在背景中使用CSS3Pie,您需要向CSS添加特定的-pie-background
声明,以及PIE behavior
样式,因此您的样式表最终会像这样:
.myelement {
background: rgba(200, 54, 54, 0.5);
-pie-background: rgba(200, 54, 54, 0.5);
behavior: url(PIE.htc);
}
[编辑]
值得一提的是,正如其他人所提到的,您可以使用IE的filter
样式,带有gradient
关键字。 CSS3Pie解决方案实际上在幕后使用了相同的技术,但消除了您直接与IE的过滤器打交道的需要,因此您的样式表更加清洁。(它还添加了许多其他不错的功能,但这与本讨论无关)