Comment rendre la transparence inter-navigateurs (y compris Internet Explorer 6) transparente pour l'arrière-plan d'un div
pendant que le texte reste opaque?
Je dois le faire sans utiliser aucune bibliothèque telle que jQuery, etc. (Mais si vous connaissez une bibliothèque qui le fait, j'adorerais le savoir pour que je puisse consulter leur code).
Utilisez 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)";
}
En plus de cela, vous devez déclarer
background: transparent
pour IE navigateurs Web, de préférence servis via des commentaires conditionnels ou similaires!
J'ai créé cet effet sur mon blog Code Landman .
Ce que j'ai fait était
#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>
La chose importante que chaque remplissage/marge et contenu doit être identique dans les deux. Fond et. Fond.
Pour que vous puissiez vous détendre sur IE6 et les navigateurs existants, vous pouvez utiliser :: before et afficher: inline-block
div
{
display: inline-block;
position: relative;
}
div::before
{
content: "";
display: block;
position: absolute;
z-index: -1;
width: 100%;
height: 100%;
background:red;
opacity: .2;
}
Démo sur http://jsfiddle.net/KVyFH/172/
Cela fonctionnera sur n'importe quel navigateur moderne
Merci @ davy-landmann pour https://stackoverflow.com/a/638064/41715 . C'est ce que je cherchais! Même effet avec le code MOINS:
@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;
}
}