天天看點

CSS-opacity實作子元素繼承父元素透明度的方法有哪些?

這篇文章主要介紹了詳解CSS-opacity子元素繼承父元素透明度的解決方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面随着小編來一起學習學習吧

在寫項目頁面的過程中,遇到子元素繼承父元素透明度的問題,查找了好多文檔給出的都是第一種方法,這種方法主要解決簡單場景的,而對于設定複雜的background時,該方法不再适用。

分析原因:

父元素背景顔色設定透明度opacity:0.5,子元素會繼承,給子元素設定opacity:1,子元素的透明度也是在父元素0.5的基礎上設定的。

第一種方法:

父元素背景顔色設定透明度時,避免使用background:#000;opacity:0.5,建議使用background:rgba(0,0,0,0.5)

第二種方法:

如果設定背景色為漸變色等這種複雜背景,第一種方法就不在适用。

background-image: linear-gradient(-180deg, rgba(20,20,20,0.00) 19%, #303030 100%);

opacity: 0.5;

因為子元素會繼承父元素的opacity屬性,我們讓它不成為子元素。新增一個子元素,将其絕對定位到父元素位置,然後在該元素上設定背景色與透明度。

  1. < div class=" container">
  2. < div class=" content">
  3. < p>我是 class為 content的 DIV</ p>
  4. < p>我的背景是 class為 background的背景</ p>
  5. < p>通過相對定位和絕對定位,我把 class為 background的 DIV移動到了我的位置。</ p>
  6. < p>同時通過我的較大的 z-index浮在了它的上面。 :)</ p>
  7. </ div>
  8. < div class=" background"></ div>
  9. </ div>
  10. .container {
  11. width: ;
  12. height: ;
  13. color: ;
  14. position:relative;
  15. }
  16. .content {
  17. position:relative;
  18. z-index: ;
  19. width: ;
  20. height: ;
  21. overflow: hidden;
  22. }
  23. .background {
  24. background-color: ;
  25. position:absolute;
  26. top: ;
  27. left: ;
  28. width: ;
  29. height: ;
  30. z-index: ;
  31. /*相容IE7、8 */
  32. -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";
  33. filter: alpha(opacity= );
  34. opacity:. ;
  35. }

面對國内衆多的雲平台,個人和企業該如何選擇呢?可以參考這篇文檔:【雲伺服器推薦】2021年騰訊雲、阿裡雲、華為雲伺服器價格和配置評測

這篇文章主要介紹了詳解CSS-opacity子元素繼承父元素透明度的解決方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面随着小編來一起學習學習吧

在寫項目頁面的過程中,遇到子元素繼承父元素透明度的問題,查找了好多文檔給出的都是第一種方法,這種方法主要解決簡單場景的,而對于設定複雜的background時,該方法不再适用。

分析原因:

父元素背景顔色設定透明度opacity:0.5,子元素會繼承,給子元素設定opacity:1,子元素的透明度也是在父元素0.5的基礎上設定的。

第一種方法:

父元素背景顔色設定透明度時,避免使用background:#000;opacity:0.5,建議使用background:rgba(0,0,0,0.5)

第二種方法:

如果設定背景色為漸變色等這種複雜背景,第一種方法就不在适用。

background-image: linear-gradient(-180deg, rgba(20,20,20,0.00) 19%, #303030 100%);

opacity: 0.5;

因為子元素會繼承父元素的opacity屬性,我們讓它不成為子元素。新增一個子元素,将其絕對定位到父元素位置,然後在該元素上設定背景色與透明度。

  1. < div class=" container">
  2. < div class=" content">
  3. < p>我是 class為 content的 DIV</ p>
  4. < p>我的背景是 class為 background的背景</ p>
  5. < p>通過相對定位和絕對定位,我把 class為 background的 DIV移動到了我的位置。</ p>
  6. < p>同時通過我的較大的 z-index浮在了它的上面。 :)</ p>
  7. </ div>
  8. < div class=" background"></ div>
  9. </ div>
  10. .container {
  11. width: ;
  12. height: ;
  13. color: ;
  14. position:relative;
  15. }
  16. .content {
  17. position:relative;
  18. z-index: ;
  19. width: ;
  20. height: ;
  21. overflow: hidden;
  22. }
  23. .background {
  24. background-color: ;
  25. position:absolute;
  26. top: ;
  27. left: ;
  28. width: ;
  29. height: ;
  30. z-index: ;
  31. /*相容IE7、8 */
  32. -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";
  33. filter: alpha(opacity= );
  34. opacity:. ;
  35. }