詳解CSS-opacity子元素繼承父元素透明度的解決方法

在寫項目頁面的過程中,遇到子元素繼承父元素透明度的問題,查找了好多文檔給出的都是第一種方法,這種方法主要解決簡單場景的,而對于設(shè)置復(fù)雜的background時,該方法不再適用。
分析原因:
父元素背景顏色設(shè)置透明度opacity:0.5,子元素會繼承,給子元素設(shè)置opacity:1,子元素的透明度也是在父元素0.5的基礎(chǔ)上設(shè)置的。
第一種方法:
父元素背景顏色設(shè)置透明度時,避免使用background:#000;opacity:0.5,建議使用background:rgba(0,0,0,0.5)
第二種方法:
如果設(shè)置背景色為漸變色等這種復(fù)雜背景,第一種方法就不在適用。
background-image: linear-gradient(-180deg, rgba(20,20,20,0.00) 19%, #303030 100%); opacity: 0.5;
因為子元素會繼承父元素的opacity屬性,我們讓它不成為子元素。新增一個子元素,將其絕對定位到父元素位置,然后在該元素上設(shè)置背景色與透明度。
<div class="container"> <div class="content"> <p>我是class為content的DIV</p> <p>我的背景是class為background的背景</p> <p>通過相對定位和絕對定位,我把class為background的DIV移動到了我的位置。</p> <p>同時通過我的較大的z-index浮在了它的上面。 :)</p> </div> <div class="background"></div> </div>
.container { width: 300px; height: 250px; color: #fff; position:relative; } .content { position:relative; z-index:5; width: 100%; height: 100%; overflow: hidden; } .background { background-color: #37a7d7; position:absolute; top:0px; left:0px; width:100%; height:100%; z-index:1; /*兼容IE7、8 */ -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; filter: alpha(opacity=50); opacity:.5; }
參考:https://www.cnblogs.com/liu-l/p/3890861.html
到此這篇關(guān)于詳解CSS-opacity子元素繼承父元素透明度的解決方法的文章就介紹到這了,更多相關(guān)CSS-opacity子元素繼承父元素透明度內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持腳本之家!
相關(guān)文章
css之Display、Visibility、Opacity、rgba和z-index: -1的區(qū)別
這篇文章主要介紹了css之Display、Visibility 和 Opacity 的區(qū)別,方便我們后期根據(jù)需要選擇,需要的朋友可以參考下2020-11-07詳解css透明度之rgba和opacity的區(qū)別及兼容
對于設(shè)置透明度,我們有兩個可以選的css3屬性:rgba 和 opacity。這篇文章主要介紹了詳解css透明度之rgba和opacity的區(qū)別及兼容,感興趣的可以一起跟隨小編來了解一下2019-01-10- CSS 圖像透明度opacity想必大家并不陌生吧,使其可以讓圖片或者頁面擁有透明效果,下面為大家講解下CSS opacity的使用及其兼容性,感興趣的朋友可以參考下2013-09-08
- 這篇文章主要舉例介紹了CSS中的cursor屬性,包括zoom-in/zoom-out和grab/grabbing等常用屬性值的使用,需要的朋友可以參考下2015-06-08
詳解CSS中postion和opacity及cursor的特性
background-postion接收多個值在瀏覽器中已經(jīng)兼容,我們可以用background-position來代替calc()函數(shù),從而去實現(xiàn)左方向或右方向的定位,這篇文章主要介紹了詳解CSS中postio2022-08-08