我如何使跨浏览器(包括Internet Explorer 6)的背景透明的div而文本仍然不透明?
div
我需要不使用任何库,如jQuery等(但如果你知道一个库,我很想知道,这样我就可以看看他们的代码)。
我使用一个alpha透明的PNG:
div.semi-transparent { background: url('semi-transparent.png'); }
不过,对于IE6,你需要使用PNG修复(1, 2)。
我已经在我的博客兰德曼代码上创建了这种效果。
我所做的是
#Header { position: relative; } #Header H1 { font-size: 3em; color: #00FF00; margin:0; padding:0; } #Header H2 { font-size: 1.5em; color: #FFFF00; margin:0; padding:0; } #Header .Background { background: #557700; filter: alpha(opacity=30); filter: progid: DXImageTransform.Microsoft.Alpha(opacity=30); -moz-opacity: 0.30; opacity: 0.3; zoom: 1; } #Header .Background * { visibility: hidden; // hide the faded text } #Header .Foreground { position: absolute; // position on top of the background div left: 0; top: 0; }
<div id="Header"> <div class="Background"> <h1>Title</h1> <h2>Subtitle</h2> </div> <div class="Foreground"> <h1>Title</h1> <h2>Subtitle</h2> </div> </div>
重要的是。background和。prospect中的每一个边距和内容都必须相同。
使用rgba !
.alpha60 { /* Fallback for web browsers that don't support RGBa */ background-color: rgb(0, 0, 0); /* RGBa with 0.6 opacity */ background-color: rgba(0, 0, 0, 0.6); /* For IE 5.5 - 7*/ filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000); /* For IE 8*/ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)"; }
除此之外,你必须为IE web浏览器声明background: transparent,最好是通过条件注释或类似的方式提供!
background: transparent
通过http://robertnyman.com/2010/01/11/css-background-transparency-without-affecting-child-elements-through-rgba-and-filters/
你可以使用::before和display: inline-block来放松你在IE6和传统浏览器上的工作要求
div { display: inline-block; position: relative; } div::before { content: ""; display: block; position: absolute; z-index: -1; width: 100%; height: 100%; background:red; opacity: .2; }
演示在http://jsfiddle.net/KVyFH/172/ < / p >
它可以在任何现代浏览器上运行
@searchResultMinHeight = 200px; .searchResult { min-height: @searchResultMinHeight; position: relative; .innerTrans { background: white; .opacity(0.5); min-height: @searchResultMinHeight; } .innerBody { padding: 0.5em; position: absolute; top: 0; } }