rgba與opacity的區別以及在遮罩層的運用
兩者的區別
如標題所示,今天我們談談rgba和opacity有什麼區別?
這次我又來做一次搬運工了,哈哈(●’◡’●)
RGBA
是代表Red(紅色) Green(綠色) Blue(藍色)和 Alpha的色彩空間。
R:紅色值。正整數 | 百分數
G :綠色值。正整數 | 百分數
B :藍色值。正整數| 百分數
A :透明度。取值0~1之間
此處的a
代表透明度,我們再來看看opacity
( •̀ ω •́ )y
opacity
屬性設定元素的不透明級別。
value
:規定不透明度。從 0.0 (完全透明)到 1.0(完全不透明)。
這麼看來,兩者都是透明度的設定,可是實際用起來卻不一樣。
經過實戰,我們會發現設定了opacity
的元素內的子元素們都被影響了,設定了opacity
的元素它的子元素都繼承了他的設定,透明度都是一樣的。
而rgba
所設定的透明度,只會影響他自己本身,而其中的子元素不會被其所影響。
如何應用
看到了rgba
的特性,我們想到了什麼?
沒錯!就是遮罩層!
就是那種彈框之後的透明深色背景,很炫的那種(●’◡’●)
直接上程式碼:
html:
<div class="shade"> <!-- 這是遮罩層-->
<div class="pop_up">這是彈框</div>
</div>
css:
.shade{
width: 100%;
height: 100%;
background: rgba(0,0,0,.8); <!--黑色背景,透明度為0.8-->
position: fixed; <!--固定全屏大小-->
top: 0;
left: 0;
z-index: 10;
}
以上就是我的理解以及我在應對遮罩層的時候所使用的方法,如果你有更好的辦法或者對我的方法有什麼建議,歡迎留言(●’◡’●)
rgba
和opacity
區別
首先來看rgba
:
R:紅色值。正整數 | 百分數
G:綠色值。正整數 | 百分數
B:藍色值。正整數 | 百分數
A:Alpha透明度。取值0~1之間。
再看opacity
:
後面的取值為從 0.0 (完全透明)到 1.0(完全不透明)。
兩者的區別:opacity
會繼承父元素的 opacity 屬性,而RGBA設定的元素的後代元素不會繼承不透明屬性。
rgba 和 opacity 的對比
rgba 中 的 a 指的是透明度:
-
rgba
的 設定的 透明度 不會被子級 元素繼承;opacity
設定的透明度會被子級元素繼承 . 因此 ,有時候 使用rgba
會比opacity
效果更好; -
rgba 可以設定
background-color , color , border-color , text-shadow , box-shadow
,
例項: 在一個背景 上 ,設定 一個子背景 ,這個子背景 透明, 同時 子 背景中的內容不透明 .
1)使用 opacity
.
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>opaciyt</title>
<style type="text/css">
.bg-box {
width: 200px;
height: 200px;
border: 1px solid #ccc;
background: red;
position: relative;
}
.bg {
background: black;
opacity: 0.5;
filter:alpha(opacity=50);
width: 100%;
height: 100px;
position: absolute;
bottom: 0;
left: 0;
z-index: 1;
}
.bg-content {
width: 100%;
height: 100px;
position: absolute;
bottom: 0;
left: 0;
z-index: 10;
}
.bg-content p {
padding: 5px 10px;
color: white;
font-size: 16px;
}
</style>
</head>
<body>
<div class="bg-box">
<div class="bg"> </div>
<div class="bg-content">
<p>我是bg的後代元素,我不想我的前景有任何透明!怎麼辦?</p>
</div>
</div>
</body>
</html>
這裡 是個 bg-content
的 兄弟 節點 bg
加上 透明度 .
同時絕對定位 ,使得 bg
和 bg-content
重合 ;
同時 bg
的 z-index
要 小於 bg-content
的 z-index
, 使得 bg
在 bg-content
下面.
如果 不是上面的那樣 ,而是 給 bg-content
的父級 加上透明度 , 那麼 bg-content
就會繼承透明度, bg-content
中的內容 也會繼承透明度. 這樣就不是我們想要達到的效果了.
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>opaciyt-2</title>
<style type="text/css">
.bg-box {
width: 200px;
height: 200px;
border: 1px solid #ccc;
background: red;
position: relative;
}
.bg {
background: black;
opacity: 0.5;
filter:alpha(opacity=50);
width: 100%;
height: 100px;
position: absolute;
bottom: 0;
left: 0;
}
.bg p {
padding: 5px 10px;
color: white;
font-size: 16px;
}
</style>
</head>
<body>
<div class="bg-box">
<div class="bg">
<div class="bg-content">
<p>我是bg的後代元素,我不想我的前景有任何透明!怎麼辦?</p>
</div>
</div>
</div>
</body>
</html>
2) 使用 rgba
,rgba
定義的透明度不會被繼承
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>rgba</title>
<style type="text/css">
.bg-box {
width: 200px;
height: 200px;
border: 1px solid #ccc;
background: red;
position: relative;
}
.bg-content {
width: 100%;
height: 100px;
position: absolute;
bottom: 0;
left: 0;
background: rgba(0, 0, 0,0.5);
}
.bg-content p{
padding: 5px 10px;
color: white;
font-size: 16px;
}
</style>
</head>
<body>
<div class="bg-box">
<div class="bg-content">
<p>我是bg的後代元素,我不想我的前景有任何透明!怎麼辦?</p>
</div>
</div>
</body>
</html>
定義的 一個相容 的 rgba
類:
.rgba {
background: rgb(0,0,0); /*The Fallback color,這裡也可以使用一張圖片來代替*/
background: rgba(0, 0, 0,0.5);
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=1,startColorstr=#80000000,endColorstr=#80000000)"; /*Filter for IE8 */
filter: progid:DXImageTransform.Microsoft.gradient(GradientType=1,startColorstr=#80000000, endColorstr=#80000000); /*Filter for older IEs */
}
相關文章
- CSS3中RGBA和opacity的區別CSSS3
- rgba()和opacity這兩個的透明效果有什麼區別呢?
- hidden, opaque, alpha, opacity的區別Opaque
- opacity和rgba透明度深入解析
- cookie與session的區別以及在Django中的實現CookieSessionDjango
- ETL、ELT區別以及如何正確運用
- 遮罩層遮罩
- 四層與七層負載均衡的區別負載
- 指標 與 陣列 以及 a 與 &a的區別指標陣列
- 白話 Ruby 與 DSL 以及在 iOS 開發中的運用iOS
- $.ajax 與 $.post 的區別,以及$.post的bug
- SSL與TLS的區別以及介紹TLS
- Android中 @和?區別以及?attr/**與@style/**等的區別Android
- net三層架構與MVC的區別架構MVC
- 運算子與= 區別
- go的 & 和 * 的區別,以及應用場景Go
- 棧與堆的區別以及增長方向
- 剩餘運算子與展開運算子的區別
- async與defer的作用與區別以及阻塞優化優化
- innodb的redo log以及與binary log的區別
- Unity 中層的運用Unity
- JDBC與ODBC的區別與應用JDBC
- vi與vim的區別以及常用命令
- vi與vim的區別以及常用命令***
- 3、前置運算(++a)與後置運算(a++)的區別
- __weak與__block區別,深層理解兩者區別BloC
- 網路七層模型與四層模型區別模型
- MVC與三層架構區別MVC架構
- SD-WAN中二層組網與三層組網的區別
- ajax,fetch,axios的區別及運用iOS
- HashMap底層實現原理/HashMap與HashTable區別/HashMap與HashSet區別HashMap
- MongoDB、Redis 以及 Memcache 的區別MongoDBRedis
- 異或運算完成數的交換, a++與++a的區別
- hashmap與hashtable的區別,以及實現hashmap的同步操作HashMap
- 四層和七層負載均衡的區別負載
- Android自定義遮罩層Android遮罩
- 新媒體運營與文案的區別在哪裡?
- 四七層負載均衡的區別負載