試一試
opacity: 0;
opacity: 0.33;
opacity: 1;
<section class="default-example" id="default-example">
<p id="example-element">
London. Michaelmas term lately over, and the Lord Chancellor sitting in
Lincoln's Inn Hall. Implacable November weather. As much mud in the streets
as if the waters had but newly retired from the face of the earth, and it
would not be wonderful to meet a Megalosaurus, forty feet long or so,
waddling like an elephantine lizard up Holborn Hill.
</p>
</section>
#example-element {
background-color: #963770;
color: white;
padding: 1em;
}
語法
opacity: 0.9;
opacity: 90%;
/* Global values */
opacity: inherit;
opacity: initial;
opacity: revert;
opacity: revert-layer;
opacity: unset;
值
<alpha-value>-
一個介於
0.0到1.0(含)之間的<number>,或者一個介於0%到100%(含)之間的<percentage>,表示通道的不透明度(即其 alpha 通道的值)。任何超出該區間的值,雖然有效,但會被限制在區間的最近邊界值。值 含義 0元素完全透明(即不可見)。 任何嚴格介於 0和1之間的<number>元素是半透明的(即可以看到元素後面的內容)。 1(預設值)元素完全不透明(視覺上是實心的)。
描述
opacity 作為一個整體應用於元素,包括其內容,即使該值不會被子元素繼承。因此,元素及其子元素相對於元素的背景都具有相同的不透明度,即使它們相對於彼此具有不同的不透明度。
若要僅改變背景的不透明度,請使用 background 屬性並指定一個支援 alpha 通道的顏色值。例如:
background: rgb(0 0 0 / 40%);
當 opacity 值設定為 0 時,元素及其所有子元素都將變得不可見,但它們仍然是 DOM 的一部分。這意味著它們仍然會響應指標事件,並且如果元素處於 Tab 鍵順序中,它們仍然可以獲得焦點。為了保證良好的可用性,請確保在這些元素接收到使用者互動時使其可見,或者使用 CSS pointer-events 屬性停用指標事件,並透過 disabled 屬性停用或為非表單相關的互動元素設定 tab-index="-1" 將其移出 Tab 鍵順序。
使用除 1 以外的 opacity 值會將元素置於一個新的層疊上下文中。
不應單獨使用不透明度向螢幕閱讀器提供資訊。應使用 HTML 的 hidden 屬性、CSS 的 visibility 或 display 樣式屬性。最好避免使用 aria-hidden 屬性,但如果元素已透過不透明度隱藏,那麼也應將其對螢幕閱讀器隱藏。
不透明度的過渡
當你將先前透過 visibility: hidden、display: none 或 content-visibility: hidden 隱藏的內容新增到頁面時,若要為元素的 opacity 實現過渡效果,你需要同時使用 @starting-style 和 transition-behavior: allow-discrete。
.card {
transition:
opacity 5s,
display 5s;
background-color: orange;
transition-behavior: allow-discrete;
@starting-style {
opacity: 0;
}
}
.card.hidden {
display: none;
opacity: 0;
}
要啟用首次樣式的過渡,需要使用 @starting-style 規則。在上面的程式碼中,在 @starting-style 中設定 opacity: 0 為元素接收其初始樣式更新時的過渡提供了一個起點。更多詳情,請參閱 @starting-style。
要過渡到 display: none,必須設定 transition-behavior: allow-discrete。更多詳情請參閱 transition-behavior 屬性。
無障礙
如果調整了文字的不透明度,重要的是要確保文字顏色與背景顏色之間的對比度足夠高,以便有視力障礙的人能夠閱讀頁面內容。
顏色對比度是透過比較調整了不透明度的文字和背景顏色值的亮度來確定的。為了滿足當前的《Web 內容無障礙指南》(WCAG),文字內容的對比度要求為 4.5:1,對於像標題這樣的大號文字則要求為 3:1。大號文字定義為 18.66px 且加粗或更大,或者 24px 或更大。
各種作業系統都提供了降低透明度的偏好設定。要根據使用者作業系統的透明度偏好設定 opacity,請使用 prefers-reduced-transparency 媒體查詢。
正式定義
正式語法
opacity =
<opacity-value>
<opacity-value> =
<number> |
<percentage>
示例
設定不透明度
以下示例演示了 opacity 屬性如何改變整個元素和內容的不透明度,從而使文字非常難以閱讀。
HTML
<div class="light">You can barely see this.</div>
<div class="medium">This is easier to see.</div>
<div class="heavy">This is very easy to see.</div>
CSS
div {
background-color: yellow;
font-weight: bold;
font-size: 130%;
}
.light {
opacity: 0.2; /* Barely see the text over the background */
}
.medium {
opacity: 0.5; /* See the text more clearly over the background */
}
.heavy {
opacity: 0.9; /* See the text very clearly over the background */
}
結果
在懸停時設定不透明度
在以下示例中,當滑鼠懸停時,不透明度會發生變化,這樣父元素上的條紋背景圖片就會透過圖片顯示出來。
HTML
<div class="wrapper">
<img
src="/shared-assets/images/examples/dino.svg"
alt="MDN Dino"
width="128"
height="146"
class="opacity" />
</div>
CSS
img.opacity {
opacity: 1;
}
img.opacity:hover {
opacity: 0.5;
}
.wrapper {
width: 200px;
height: 160px;
background-color: #f03cc3;
background-image: linear-gradient(
90deg,
transparent 50%,
rgb(255 255 255 / 50%) 50%
);
background-size: 20px 20px;
}
結果
根據使用者偏好設定樣式
要根據使用者作業系統的透明度偏好來設定元素樣式,請使用 prefers-reduced-transparency 媒體查詢。以下示例演示瞭如何使用 prefers-color-scheme 媒體查詢根據使用者的偏好指定所需的 opacity。
.element {
opacity: 0.5;
}
@media (prefers-reduced-transparency) {
.element {
opacity: 1;
}
}
規範
| 規範 |
|---|
| CSS 顏色模組第四版 # propdef-opacity |
| Scalable Vector Graphics (SVG) 2 # ObjectAndGroupOpacityProperties |
瀏覽器相容性
載入中…
另見
prefers-reduced-transparency媒體查詢- CSS 顏色模組
- SVG
opacity屬性