CSS 基础教程
CSS 盒子模型
CSS 高级教程
CSS3 特点
CSS3 示例
CSS3 参考

CSS 透明度

opacity CSS 属性指定元素的透明度。

所有浏览器的不透明度

不透明度现在是 CSS3 规范的一部分,它已经存在了很长时间。 但是,较旧的浏览器有不同的方法来控制不透明度或透明度。

Firefox、Safari、Chrome、Opera 和 IE9 中的 CSS 不透明度

这是所有当前浏览器中 CSS 不透明度的最新语法。

p {
    opacity: 0.7;
}

上述样式规则将使段落元素 70% 不透明(或 30% 透明)。

opacity 属性的取值范围为 0.0 到 1.0。 设置 opacity: 1; 将使元素完全不透明(即 0% 透明),而 opacity: 0; 将使元素完全透明(即 100% 透明)。


Internet Explorer 8 及更低版本中的 CSS 不透明度

Internet Explorer 8 和更早版本支持 Microsoft 独有的属性"alpha filter"来控制元素的透明度。

p {
    filter: alpha(opacity=50);
    zoom: 1;  /* Fix for IE7 */
}

注意: IE 中的 Alpha 过滤器接受从 0100 的值。 0 值使元素完全透明(即 100% 透明),而值 100 使元素完全不透明(即 0% 透明)。


所有浏览器的 CSS 不透明度

结合上述两个步骤,您将获得所有浏览器的不透明度

p {
    opacity: 0.5;  /* 现代浏览器的不透明度 */
    filter: alpha(opacity=50);  /* IE8 及更低版本的不透明度 */
    zoom: 1;  /* Fix for IE7 */
}

警告:在 Internet Explorer 8 和更低版本中包含 alpha filter 来控制透明度会在您的样式表中创建无效代码,因为这是 Microsoft 独有的属性,而不是标准 CSS 属性 .


CSS 图像不透明度

您还可以使用 CSS Opacity 制作透明图像。

下图中的三幅图像均来自同一个源图像。 它们之间的唯一区别是它们的不透明度。

100% Opaque Image 50% Opaque Image 25% Opaque Image
不透明度:1 不透明度:0.5 不透明度:0.25

在鼠标悬停时更改图像不透明度

以下示例演示了 CSS 图像不透明度的常见用法,当用户将鼠标指针移到图像上时,图像的不透明度会发生变化。

Snail Tortoise Octopus

— 将鼠标指针移到图像上以查看效果。


透明框中的文字

在元素上使用不透明度时,不仅元素的背景将具有透明度,而且其所有子元素也将变得透明。 如果不透明度值变得更高,它会使透明元素内的文本难以阅读。

OPACITY OPACITY OPACITY OPACITY

为了防止这种情况,您可以使用透明的 PNG 图像,或者将文本块放在透明框之外,并使用负 marginCSS positioning 将其视觉推入内部。

div {
    float: left;
    opacity: 0.7;
    border: 1px solid #949781;
}
p {
    float: left;
    position: relative;
    margin-left: -400px;
}

使用 RGBA 的 CSS 透明度

除了 RGB,CSS3 还引入了一种新的方式 RGBA 来指定一种颜色,其中包括 alpha 透明度作为颜色值的一部分。 RGBA 代表红蓝绿阿尔法。

RGBA 声明是设置颜色透明度的一种非常简单的方法。

div {
    background: rgba(200, 54, 54, 0.5);
}
p {
    color: rgba(200, 54, 54, 0.25);
}

前三个数字代表 RGB 值中的颜色,即红色 (0-255)、绿色 (0-255)、蓝色 (0-255),第四个代表 0 到 1 之间的 alpha 透明度值(0 使颜色完全透明, 而 1 的值使其完全不透明)。

关于 RGBA 透明度需要注意的一个重要特征是 — 控制单个颜色的不透明度的能力。 使用 RGBA,我们可以使元素的文本颜色透明并保持背景不变。

RGBA RGBA RGBA RGBA

— 或者单独保留文本颜色,只更改背景的透明度。

RGBA RGBA RGBA RGBA

您可以看到使用 RGBA 控制单个颜色而不是整个元素的不透明度是多么容易。 但是,始终建议为不支持 RGBA 颜色的浏览器定义备用颜色。

注意: RGBA 透明度不会像 opacity 属性那样影响子元素。 RGBA 的 alpha 值影响单个颜色而不是整个元素的透明度。


声明后备颜色

所有浏览器都不支持 RGBA 颜色。 但是,您可以为不支持它的浏览器提供替代方案,例如纯色或透明 PNG 图像。

p {
    /* 不支持 RGBA 的 Web 浏览器的后备方案 */
    background: rgb(0, 0, 0);
    /* 不透明度为 0.5 的 RGBa */
    background: rgba(0, 0, 0, 0.5);
}

警告: Internet Explorer 8 及更早版本不支持 RGBA 颜色。 他们使用 gradient filter 来实现已弃用的 RGBA 效果。

Advertisements