CSS 透明度与不透明度

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


透明图像

opacity 属性的取值范围为 0.0-1.0。值越低,越透明:

Forest

opacity 0.2

Forest

opacity 0.5

Forest

opacity 1(默认)

代码如下:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <style>
  5. img {
  6. opacity: 0.5;
  7. }
  8. </style>
  9. </head>
  10. <body>
  11. <h1>图像透明度</h1>
  12. <p>opacity 属性规定元素的透明度。值越低,越透明:</p>
  13. <p>50% 不透明度的图像:</p>
  14. <img src="/znadmin/md/1247/0.jpg" alt="forest" >
  15. </body>
  16. </html>

透明悬停效果

opacity 属性通常与 :hover 选择器一同使用,这样就可以在鼠标悬停时更改不透明度:

Northern Lights
Mountains
Italy

代码如下:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <style>
  5. img {
  6. opacity: 0.5;
  7. }
  8. img:hover {
  9. opacity: 1.0;
  10. }
  11. </style>
  12. </head>
  13. <body>
  14. <h1>图像透明度</h1>
  15. <p>opacity 属性常与 :hover 选择器一起使用,改变鼠标悬停时的不透明度:</p>
  16. <img src="/znadmin/md/1247/3.jpg" alt="Northern Lights" width="170" height="170">
  17. <img src="/znadmin/md/1247/4.jpg" alt="Mountains" width="170" height="170">
  18. <img src="/znadmin/md/1247/5.jpg" alt="Italy" width="170" height="170">
  19. </body>
  20. </html>
例子解释

第一个 CSS 块类似于实例 1 中的代码。此外,我们还添加了当用户将鼠标悬停在其中一个图像上时的效果。在这种情况下,当用户将鼠标悬停在图像上时,我们希望图像不透明。这条 CSS 是 opacity:1;。当鼠标指针离开图像时,图像将再次透明。

反向悬停效果的例子:

Northern Lights
Mountains
Italy

代码如下:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <style>
  5. img:hover {
  6. opacity: 0.5;
  7. }
  8. </style>
  9. </head>
  10. <body>
  11. <h1>图像透明度</h1>
  12. <p>opacity 属性常与 :hover 选择器一起使用,改变鼠标悬停时的不透明度:</p>
  13. <img src="/znadmin/md/1247/3.jpg" alt="Northern Lights" width="170" height="170">
  14. <img src="/znadmin/md/1247/4.jpg" alt="Mountains" width="170" height="170">
  15. <img src="/znadmin/md/1247/5.jpg" alt="Italy" width="170" height="170">
  16. </body>
  17. </html>

透明盒

使用 opacity 属性为元素的背景添加透明度时,其所有子元素都继承相同的透明度。这可能会使完全透明的元素内的文本难以阅读:

opacity 1

opacity 0.6

opacity 0.3

opacity 0.1

实例
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <style>
  5. div {
  6. background-color: #4CAF50;
  7. padding: 10px;
  8. }
  9. div.first {
  10. opacity: 0.1;
  11. }
  12. div.second {
  13. opacity: 0.3;
  14. }
  15. div.third {
  16. opacity: 0.6;
  17. }
  18. </style>
  19. </head>
  20. <body>
  21. <h1>Transparent Box</h1>
  22. <p>使用“不透明度”属性向元素的背景添加透明度时,其所有子元素也将变为透明。这会使完全透明元素中的文本难以读取:</p>
  23. <div class="first"><p>opacity 0.1</p></div>
  24. <div class="second"><p>opacity 0.3</p></div>
  25. <div class="third"><p>opacity 0.6</p></div>
  26. <div><p>opacity 1 (default)</p></div>
  27. </body>
  28. </html>

使用 RGBA 的透明度

如果您不希望对子元素应用不透明度,如上面的例子,请使用 RGBA 颜色值。下面的例子设置背景色而不是文本的不透明度:

100% opacity

60% opacity

30% opacity

10% opacity

代码如下:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <style>
  5. div {
  6. background: rgb(76, 175, 80);
  7. padding: 10px;
  8. }
  9. div.first {
  10. background: rgba(76, 175, 80, 0.1);
  11. }
  12. div.second {
  13. background: rgba(76, 175, 80, 0.3);
  14. }
  15. div.third {
  16. background: rgba(76, 175, 80, 0.6);
  17. }
  18. </style>
  19. </head>
  20. <body>
  21. <h1>Transparent Box</h1>
  22. <p>用 opacity:</p>
  23. <div style="opacity:0.1;"><p>10% opacity</p></div>
  24. <div style="opacity:0.3;"><p>30% opacity</p></div>
  25. <div style="opacity:0.6;"><p>60% opacity</p></div>
  26. <div><p>opacity 1</p></div>
  27. <p>用 RGBA 颜色:</p>
  28. <div class="first"><p>10% opacity</p></div>
  29. <div class="second"><p>30% opacity</p></div>
  30. <div class="third"><p>60% opacity</p></div>
  31. <div><p>default</p></div>
  32. <p>注意在使用“不透明度”属性时,文本和背景色是如何变得透明的。</p>
  33. </body>
  34. </html>

您已经从本站的 CSS 颜色 这一章中学到了可以将 RGB 用作颜色值。除 RGB 外,还可以将 RGB 颜色值与 alpha 通道(RGBA)一起使用 - 该通道规定颜色的不透明度。

RGBA 颜色值指定为:rgba(red, green, blue, alpha)。 alpha 参数是介于 0.0(完全透明)和 1.0(完全不透明)之间的数字。

提示:您可以在本站的 CSS 颜色 这一章中学到有关 RGBA 颜色的更多知识。


透明盒中的文本

这段文本被放置在一个透明框中。

代码如下:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <style>
  5. div.background {
  6. background: url(/images/klematis.jpg) repeat;
  7. border: 2px solid black;
  8. }
  9. div.transbox {
  10. margin: 30px;
  11. background-color: #ffffff;
  12. border: 1px solid black;
  13. opacity: 0.6;
  14. }
  15. div.transbox p {
  16. margin: 5%;
  17. font-weight: bold;
  18. color: #000000;
  19. }
  20. </style>
  21. </head>
  22. <body>
  23. <div class="background">
  24. <div class="transbox">
  25. <p>这段文本被放置在一个透明框中。</p>
  26. </div>
  27. </div>
  28. </body>
  29. </html>
例子解释

首先,我们创建一个带有背景图像和边框的 <div> 元素(class="background")。

然后,我们在第一个 <div> 中创建另一个 <div>(class="transbox")。

<div class="transbox"> 有背景色和边框 - 这个 div 是透明的。

在透明的 <div> 内,我们在 <p> 元素内添加了一些文本。