Bueno aqui está mi humilde código.... tal como escribi al principio...
1._ hacemos una pequeña función para saber la altura de la ventana del navegador, debido a las diferentes versiones y nagadores.. tenemos varios condicionales (if.. else).
Código HTML :
function AlturaNav(){
/* función para elegir opción según navegador y versión que admita */
var AltoNavegador = 750;var AnchoNavegador = 800;
if (document.body && document.body.offsetHeight) { AltoNavegador = document.body.offsetHeight; AnchoNavegador = document.body.offsetWidth;}
if (document.compatMode=='CSS1Compat' && document.documentElement && document.documentElement.offsetHeight ) { AltoNavegador = document.documentElement.offsetHeight;AnchoNavegador = document.documentElement.offsetWidth;}
if (window.innerWidth && window.innerHeight) {AltoNavegador = window.innerHeight;AnchoNavegador = window.innerWidth;}
return(AltoNavegador);
lo acabamos con return, para asi al hacerle una llamada, nos devuelva el valor (altura).
Sobra la parte de los width, por no usarlo... pero bueno lo podeis borrar para aligerar unos byts.luego una vez tenemos la altura del navegador viene propiamente nuestra funcion, en la que segun la altura de la ventana y la altura del "div" contenedor de la página, nos cambiará la "position a fixed o a relative
Código HTML :
function algo(){
var Alto=AlturaNav();
var miAlto=document.getElementById('cuerpo').offsetHeight;
var resultado=Alto - document.getElementById('piie').offsetHeight;
if (document.getElementById('piie').style.position=="fixed"){
if( resultado > miAlto ){
document.getElementById('piie').style.top=resultado+"px";
document.getElementById('piie').style.position="fixed";
}
else{
document.getElementById('piie').style.top="0px";
document.getElementById('piie').style.position="relative";
}
}else{
if( Alto > miAlto ){
document.getElementById('piie').style.top=resultado+"px";
document.getElementById('piie').style.position="fixed";
}
else{
document.getElementById('piie').style.top="0px";
document.getElementById('piie').style.position="relative";
}
}
}
y ya por último no tenemos que olvidar incluir detro de <script></script>
Código HTML :
window.onresize = algo
También en la tag
Código HTML :
<body onload="algo();">
de esta manera nos garantizamos su funcionamiento... También podría inlcluirse una llamada a la función despues de una accion "onclik" como la que incluyo en el botón.
como css solo puse... para construir un poco la página.. pero vale cualquier medida.
Código HTML :
<style>
body{background-color:black;color:white;}
#cuerpo{border:solid 1px white;display:block;width:500px;margin:0 auto;}
#piie{border:solid 1px white;position: fixed;width:498px;height:145px;top:700px;margin:0px;}
</style>
Para que el efecto quede bien es aconsejable que el ancho sea definido y no sea 100%.
un saludo y espero os sirva.
ejemplo