今天在做東西的時候用到了opacity,我發現子元素會繼承父元素的opacity。
我找了一下其他人的解決方案,發現了一個比較靠譜的:
既然子元素必定會繼承父元素的opacity,那么咱們就不讓他們存在父子關系。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh-cn"> <head> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <title></title> <style type="text/css"> body{ background-color: #000;margin: 0;padding: 0; } .noOpacity{ width: 300px; height: 250px; background-color: #37a7d7; color: #fff; } /*上面的是背景對比,以下是方法*/ .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; } </style> </head> <body> <div class="noOpacity">我是用來作對比的</div> <div class="container"> <div class="content"> <p>我是class為content的DIV</p> <p>我的背景是class為background的背景</p> <p>通過相對定位和絕對定位,我把class為background的DIV移動到了我的位置。</p> <p>同時通過我的較大的z-index浮在了它的上面。 :)</p> <p style="text-align:right">——劉龍(liulo)</p> </div> <div class="background"></div> </div> </body> </html>
效果:
本文代碼及結果來自博主:iulo