Io, "con poche righe" sono riuscito ad elaborare questo:
Codice HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
<script type="text/javascript">
var cpu_occupata=false; // So che può sembrare strano, ma nel tempo ho imparato che è molto utile tenere salvato in una vaiabile cosa si sta eseguendo.
function closeDiv(id) {
if(cpu_occupata==false || cpu_occupata=='closeDiv'){
var actual_height=parseInt(document.getElementById(id).style.height);
if(actual_height <= 0){
document.getElementById(id).style.display='none';
cpu_occupata=false;
}else{
actual_height-=5; // Specifica qui quanto togliere al div ogni 10 millisecondi.
document.getElementById(id).style.height=actual_height+"px";
cpu_occupata='closeDiv';
setTimeout("closeDiv('"+id+"');", 10);
}
}
}
function openDiv(id, size) { // Purtroppo non ho trovato una soluzione, devi dargli come imput l'altezza che vuoi dare al div.
if(cpu_occupata==false || cpu_occupata=='openDiv'){
var actual_height=parseInt(document.getElementById(id).style.height);
if(actual_height < size){
document.getElementById(id).style.display='';
actual_height+=5; // Specifica qui quanto aggiungere al div ogni 10 millisecondi.
document.getElementById(id).style.height=actual_height+"px";
cpu_occupata='openDiv';
setTimeout("openDiv('"+id+"', "+size+");", 10);
}else{
cpu_occupata=false;
}
}
}
function switchDiv(id, size){
if(document.getElementById(id).style.display==''){
closeDiv(id);
}else{
openDiv(id,size);
}
}
</script>
</head>
<body>
<a href="#" onclick="switchDiv('il_div', 800);">Apri/chiudi</a>
<div id="il_div" style="height:800px; width:200px; background-color:#FFFF00;">
aaaaaaaaaaa<br/>
aaaaaaaaaaa<br/>
aaaaaaaaaaa<br/>
aaaaaaaaaaa<br/>
aaaaaaaaaaa<br/>
aaaaaaaaaaa<br/>
aaaaaaaaaaa<br/>
aaaaaaaaaaa<br/>
aaaaaaaaaaa<br/>
aaaaaaaaaaa<br/>
</div>
</body>
</html>