Question
J'ai la page HTML suivante:
<body>
<div class="hide1" style="width:1000px; height:1000px;">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td colspan="2" align="center">Heading</td>
</tr>
<tr>
<td width="51%">Left1</td>
<td width="49%">right 1 </td>
</tr>
<tr>
<td>Left 2 </td>
<td>right 2 </td>
</tr>
</table>
</div>
</body>
La classe hide1
est:
<style>
.hide1 {
background: url(back.png) no-repeat;
}
</style>
et la fonction JQUERY est:
<script>
$(document).ready(function(){
$("div.mover").click(function () {
$("div.hide1").fadeTo("slow", 0.33);
});
});
</script>
Mon problème est que toute la page s'estompe. Mais je veux seulement atténuer l'image de fond de div. Comment puis-je faire cela?
La solution
Qu'en est-il d'ajouter un div de plus avec uniquement l'image de fond et de le réduire en fondu?
Quelque chose comme:
<div class="wrapper">
<div class="image">
//FADE THIS
</div>
<div class="content">
// DON'T FADE THIS
</div>
</div>
Vous pouvez utiliser le positionnement absolu pour les divs internes.
Autres conseils
Vous ne pouvez pas appliquer l'opacité CSS uniquement à l'image d'arrière-plan d'un élément.
Vous devez disposer de deux éléments, l’un contenant l’image d’arrière-plan (que vous pouvez fondre en fondu) et l’autre contenant le contenu non atténué. Vous les positionnez ensuite les uns sur les autres à l'aide du positionnement CSS.
Cela peut devenir délicat lorsque la hauteur de l'élément de contenu n'est pas connue à l'avance car vous devez donner à l'élément d'arrière-plan la même hauteur. Dans ce cas, vous aurez peut-être besoin d’une combinaison de positionnement absolu et de sauvegarde de script pour IE6.