Codice PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml">
<head>
<title>test</title>
<style>
#Contenitore{
position:relative;
}
#Bottone{
background-color:#000099;
color:#FFFFFF;
font-weight:bold;
width:100px;
height:30px;
text-align:center;
}
#Tendina{
background-color:#003300;
color:#FFFFFF;
font-weight:bold;
width:150px;
height:200px;
position:relative;
left:10px;
}
</style>
<script type="text/javascript">
function toggle_visibility(idx){
var oggetto = document.getElementById(idx);
//alert ('Parto');
if(oggetto.style.display == 'none'){
oggetto.style.display = 'block';
alpha = 0;
quantita = 0.05;
oggetto.style.opacity = alpha;
//alert('Non visibile: lo metto visibile con alpha = '+alpha+'('+oggetto.style.opacity+'); Incremento = '+quantita);
}
else{
alpha = 1;
oggetto.style.opacity = alpha;
quantita = -0.05;
//alert('Visibile: lo metto visibile con alpha = '+alpha+'('+oggetto.style.opacity+'); Incremento = '+quantita);
}
cambia_alpha(alpha,quantita,idx);
}
function cambia_alpha(alpha,quantita,idx){
var oggetto = document.getElementById(idx);
alpha+=quantita; //Si ferma qui
oggetto.style.opacity = alpha;
alpha=alpha*100;
alpha=parseInt(alpha);
alpha=alpha/100;
//alert('Cambio alpha = '+alpha+'('+oggetto.style.opacity+')');
if(alpha>0&&alpha<1){
setTimeout(function(){cambia_alpha(alpha,quantita,idx);},200);
}else{
if(alpha==0)
oggetto.style.display = 'none';
// alert('Basta');
}
}
</script>
</head>
<body>
<div id="Contenitore">
<div id="Bottone" onClick="toggle_visibility('Tendina');">Bottone</div>
<div id="Tendina">Contenuto della tendina</div>
</div> </body>
</html>
Tolti tutti gli alert.
Funziona, con Firefox, anche se io metterei un timeout minore per rendere più 'fluido' l'effetto.
Con timeout a 30 msec e quantita a 0.02 l'effetto non è affatto male!
Il problema ? Nota la differenza nella setTimeout!
Eh Eh 
HTH
Zappa