Il seguente script serve per ottenere lo scrolling di un menu in senso verticale. Il problema che io vorrei risolvere (e quindi come modificare lo script) è il seguente: se non vado errato lo script consente di impostare la distanza (in pixel) di partenza del menu dal margine sx (27) e da quello superiore (320) della schermata ma non consente di impostare anche una posizione d'arresto (a quanti pixel di distanza) dal margine inferiore della schermata.
Ora, poichè per mia necessità il menu scrollante dovrebbe muoversi all'interno di uno spazio (in verticale) definito, sulla base di come è impostato lo script, quando scrollo completamente la pagina verso il basso, la parte inferiore del menu continua la sua corsa fino in fondo alla stessa (cosa che io vorrei non accadesse).
Quindi la mia domanda è la seguente: come posso impostare la distanza in pixel dal margine inferiore della schermata oltre il quale il menu non può scrollare? Spero di essere stato chiaro.
In definitiva: anche se la pagina viene scrollata completamente, il menu non deve proseguire il suo movimento verso il basso oltre un certo limite da me imposto.
Segue lo script che molti di voi sicuramente conosceranno:
-------------------------------
<script>
if (!document.layers)
document.write('<div id="divStayTopLeft" style="position:absolute">')
</script>
<layer id="divStayTopLeft">
MENU
</layer>
<script type="text/javascript">
file://Enter "frombottom" or "fromtop"
var verticalpos="frombottom"
if (!document.layers)
document.write('</div>')
function JSFX_FloatTopDiv()
{
var startX = 27,
startY = 320;
var ns = (navigator.appName.indexOf("Netscape") != -1);
var d = document;
function ml(id)
{
var el=d.getElementById?d.getElementById(id):d.all?d.a ll[id]:d.layers[id];
if(d.layers)el.style=el;
el.sP=function(x,y){this.style.left=x;this.style.t op=y;};
el.x = startX;
if (verticalpos=="fromtop")
el.y = startY;
else{
el.y = ns ? pageYOffset + innerHeight : document.body.scrollTop + document.body.clientHeight;
el.y -= startY;
}
return el;
}
window.stayTopLeft=function()
{
if (verticalpos=="fromtop"){
var pY = ns ? pageYOffset : document.body.scrollTop;
ftlObj.y += (pY + startY - ftlObj.y)/8;
}
else{
var pY = ns ? pageYOffset + innerHeight : document.body.scrollTop + document.body.clientHeight;
ftlObj.y += (pY - startY - ftlObj.y)/8;
}
ftlObj.sP(ftlObj.x, ftlObj.y);
setTimeout("stayTopLeft()", 10);
}
ftlObj = ml("divStayTopLeft");
stayTopLeft();
}
JSFX_FloatTopDiv();
</script>