對不使用rgba沒什麼意義。
IE8不支持opacity
和rgba()
,只有9以上(如果您需要支持的話)。除了IE8接受filter
之外,這可能是透明度的一種解決方法。
如果情況並非如此,並且您根本不想使用,因爲它很煩人地將十六進制轉換爲rgb(我也覺得煩人),不用擔心! SASS接受HEX #000
作爲RGBA值和正確轉換,就像這樣:
$dark: #000;
background-color: rgba($dark, .5); //outputs background-color: rgba(0,0,0,.5); in this case
但不管怎麼說,這裏是僞元素的方法後/前(選擇)。請參閱評論:
$dark: #000;
$highlight: blue;
nav {
width:100%;
background-color: transparent; //transparent or you won't see the color behind!
//needs to be relative or after will go outside nav bounds
position: relative;
z-index: 0;
//using after (or before) to fake the bg
&::after { //if you need to support IE8, use single colon instead. Standard is :: but IE8 just supports with one
content:"";
display: block;
//those two really could be just be
//"background-color: rgba($dark, .5);" you know
background: $dark;
opacity: .5;
//filter here if you want IE8 support
//making it fill entire nav
bottom: 0;
top: 0;
left: 0;
right: 0;
position: absolute;
//behind our nav
z-index: -1;
}
//ul and so on here
}
製作一個「dummy」'nav',其中一個位於帶有內容的'nav'後面。然後,您可以更改虛擬模式的不透明度以實現透明度,並保留內容的不透明度。 – Charlie 2014-08-27 20:11:50
@Charlie這就是我雖然也:)。但不是額外的標記(第二個'nav'或者其他東西),你可以使用'before/after'來實現它。 – RaphaelDDL 2014-08-27 20:50:04