[英]CSS opacity only to background color, not the text on it? [duplicate]
我可以將opacity
屬性僅分配給div
的background
屬性而不是其上的文本嗎?
我試過了:
background: #CCC;
opacity: 0.6;
但這不會改變不透明度。
聽起來您想使用透明背景,在這種情況下,您可以嘗試使用rgba()
函數:
rgba(R, G, B, A)
R(紅色)、G(綠色)和 B(藍色)可以是
<integer>
s 或<percentage>
s,其中數字 255 對應於 100%。 A (alpha) 可以是介於 0 和 1 之間的<number>
或<percentage>
,其中數字 1 對應於 100%(完全不透明度)。RGBa 示例
background: rgba(51, 170, 51, .1) /* 10% opaque green */ background: rgba(51, 170, 51, .4) /* 40% opaque green */ background: rgba(51, 170, 51, .7) /* 70% opaque green */ background: rgba(51, 170, 51, 1) /* full opaque green */
一個展示如何使用rgba
小例子。
截至 2018 年,幾乎每個瀏覽器都支持rgba
語法。
最簡單的方法是使用 2 個 div,1 個用於背景,1 個用於文本:
#container { position: relative; width: 300px; height: 200px; } #block { background: #CCC; filter: alpha(opacity=60); /* IE */ -moz-opacity: 0.6; /* Mozilla */ opacity: 0.6; /* CSS3 */ position: absolute; top: 0; left: 0; height: 100%; width: 100%; } #text { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
<div id="container"> <div id="block"></div> <div id="text">Test</div> </div>
僅適用於較少用戶:
如果您不喜歡使用 RGBA 設置顏色,而是使用 HEX,有一些解決方案。
你可以使用像這樣的混合:
.transparentBackgroundColorMixin(@alpha,@color) {
background-color: rgba(red(@color), green(@color), blue(@color), @alpha);
}
並像這樣使用它:
.myClass {
.transparentBackgroundColorMixin(0.6,#FFFFFF);
}
實際上,這是一個內置的 Less 函數也提供的:
.myClass {
background-color: fade(#FFFFFF, 50%);
}
我的技巧是用顏色創建一個透明的 .png 並使用background:url()
。
這適用於所有瀏覽器
div {
-khtml-opacity: .50;
-moz-opacity: .50;
-ms-filter: ”alpha(opacity=50)”;
filter: alpha(opacity=50);
filter: progid:DXImageTransform.Microsoft.Alpha(opacity=0.5);
opacity: .50;
}
如果您不希望透明度影響整個容器及其子項,請檢查此解決方法。 你必須有一個絕對定位的孩子和一個相對定位的父母來實現這一點。 不影響子元素的 CSS 不透明度
檢查不影響“兒童”的 CSS Opacity 上的工作演示
做到這一點的一個好方法是確實使用 CSS 3。
創建一個 div 寬度類 - 例如在頁面頂部的 supersizer:
然后設置以下 CSS 屬性:
.supersizer { background: url("http://fc06.deviantart.net/fs70/f/2012/099/d/f/stackoverflow_16x16_icon_by_muntoo_stock-d4vl2v4.png") no-repeat center center fixed; width: 100%; height: 100%; position: fixed; z-index: -1; opacity: 0.5; -webkit-background-size: cover; -moz-background-size: cover; -o-background-size: cover; background-size: cover; top: 0; }
<div class="supersizer"></div>
對於遇到此線程的任何人,這是我剛剛編寫的一個名為 thatsNotYoChild.js 的腳本,它可以自動解決此問題:
http://www.impressivewebs.com/fixing-parent-child-opacity/
基本上,它將子元素與父元素分開,但將元素保持在頁面上的相同物理位置。
最簡單的解決方案是創建 3 個divs
。 一個將包含另外兩個,一個具有透明背景,另一個包含內容。 使第一個 div 的位置相對並將具有透明背景的那個設置為負z-index
,然后調整內容的位置以適應透明背景。 這樣您就不會遇到絕對定位問題。
用:
background:url("location of image"); // Use an image with opacity
此方法適用於所有瀏覽器。
你不能。 你必須有一個單獨的 div 就是那個背景,這樣你就可以只應用不透明度。
我最近嘗試這樣做,因為我已經在使用 jQuery,我發現以下是最不麻煩的:
text
div 一個純背景色,因為這將是無 JavaScript 的默認值。text
div 的高度,並將其應用於background
div。我確信有某種 CSS ninja 方法可以只用浮點數或其他東西來完成所有這些,但我沒有耐心弄清楚。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.