Bonjour,
Il y a quelques temps, je suis tombée sur un tutorial d'un site de développeurs web qui proposait de résoudre la question de la transparence des blocs en CSS2.
Comme cela a déjà été soulevé ici même, le problème est le suivant : lorsqu'on applique la fonction de transparence à un bloc, en CSS2, le bloc et TOUT SON CONTENU sont transparents, y compris le texte, etc...
Je précise tout de suite que ce que propose le tutorial ne fonctionne pas...
La méthode proposée était la suivante :
l'HTML :
le CSS (il n'y a que les infos sur la transparence, il faut y ajouter le positionnement, bien sûr) :
Mais... CA NE MARCHE PAS ! Et comme cela m'a été confirmé sur Alsacréations dans plusieurs discussions, lorsqu'un bloc est transparent, tout son contenu est transparent, en tous cas en CSS2.
Voici donc une petite méthode pour pallier à ça. Je m'empresse de préciser qu'elle comporte des inconvénients :
1. je ne suis pas sûre qu'elle soit très orthodoxe. Les connaisseurs parmi vous pourront sans doute me le dire...
2. le bloc créé a forcément une taille fixe. Oui, c'est une sacrée contrainte, mais enfin, bon, c'est mieux que rien...
Voici le principe : on crée un bloc contenant simple, sans couleur de fond, sans transparence, par exemple :
Ce bloc contient un paragraphe qu'on peut aussi définir dans la feuille de style
Jusque là, tout est normal...
L'idée ensuite est de créer un bloc vide, de la taille du contenant, AU-DESSOUS du paragraphe, et qui aura des propriétés de transparence.
HTML :
Et dans le CSS (c'est là que les puristes risquent de me tomber dessus...) :
Voila. Ca marche. Mais c'est peut-être un peu cavalier...
Qu'en pensez-vous ?
Basille
Modifié par Basille (15 Oct 2007 - 15:36)
Il y a quelques temps, je suis tombée sur un tutorial d'un site de développeurs web qui proposait de résoudre la question de la transparence des blocs en CSS2.
Comme cela a déjà été soulevé ici même, le problème est le suivant : lorsqu'on applique la fonction de transparence à un bloc, en CSS2, le bloc et TOUT SON CONTENU sont transparents, y compris le texte, etc...
Je précise tout de suite que ce que propose le tutorial ne fonctionne pas...
La méthode proposée était la suivante :
l'HTML :
<div id="transparent">
<p>Contenu du bloc</p>
</div>
le CSS (il n'y a que les infos sur la transparence, il faut y ajouter le positionnement, bien sûr) :
#transparent {
background-color:#FFFFFF;
filter:alpha(opacity=40);/* IE*/
-moz-opacity:.40;/* Mozilla*/
opacity:.40; /*générale*/
}
#transparent p {
filter:alpha(opacity=100);/* IE*/
-moz-opacity:1;/* Mozilla*/
opacity:1;/*générale*/
}
Mais... CA NE MARCHE PAS ! Et comme cela m'a été confirmé sur Alsacréations dans plusieurs discussions, lorsqu'un bloc est transparent, tout son contenu est transparent, en tous cas en CSS2.
Voici donc une petite méthode pour pallier à ça. Je m'empresse de préciser qu'elle comporte des inconvénients :
1. je ne suis pas sûre qu'elle soit très orthodoxe. Les connaisseurs parmi vous pourront sans doute me le dire...
2. le bloc créé a forcément une taille fixe. Oui, c'est une sacrée contrainte, mais enfin, bon, c'est mieux que rien...
Voici le principe : on crée un bloc contenant simple, sans couleur de fond, sans transparence, par exemple :
#contenant {
width:450px;
height:200px;
margin: 0px;
padding:0px;
border:1px solid #FFFFFF;
position:relative;
}
Ce bloc contient un paragraphe qu'on peut aussi définir dans la feuille de style
#contenant p {
width:440px;
padding:0px;
margin:0px;
height:175px;
text-align:justify;
font-weight:normal;
color:#005EC5;
font-size:11px;
position:relative;
}
Jusque là, tout est normal...
L'idée ensuite est de créer un bloc vide, de la taille du contenant, AU-DESSOUS du paragraphe, et qui aura des propriétés de transparence.
HTML :
<div id="contenant">
<div id="transparent"></div>
<p>Ici le contenu du bloc</p>
<div>
Et dans le CSS (c'est là que les puristes risquent de me tomber dessus...) :
#contenant {
width:450px;
height:200px;
margin: 0px;
padding:0px;
border:1px solid #FFFFFF;
position:relative;
}
#contenant p {
width:440px;
padding:0px;
margin:0px;
height:175px;
text-align:justify;
font-weight:normal;
color:#005EC5;
font-size:11px;
position:relative;
z-index:1;
}
#transparent {
background-color:#FFFFFF;
filter:alpha(opacity=40);/* IE*/
-moz-opacity:.40;/* Mozilla*/
opacity:.40; /*générale*/
width:450px;
height:200px;
position:absolute;
z-index:0;
}
Voila. Ca marche. Mais c'est peut-être un peu cavalier...
Qu'en pensez-vous ?
Basille
Modifié par Basille (15 Oct 2007 - 15:36)