Tendrá que hacer algo parecido a lo que hace Ozzu. Notará que a veces el menú de la derecha es un elemento fijo si la página es suficientemente larga, pero tan pronto como el pie de página aproxima lo vuelve a no ser fijo para no desplazarse sobre el pie de página. La única manera de lograrlo es mediante Javascript. En el caso de Ozzu utilizamos jQuery para hacerlo más fácil. Básicamente usted sólo necesita costumbre escribir código para detectar cuando el elemento fijo debe ser fijo y no debe fijarse.
Hay probablemente numerosas formas de hacerlo, pero cómo lo hacemos actualmente son como sigue:
//Enables the dynamic static menu
var triggerY, triggerY2;
IntializeScrollTriggers();
$(window).resize(function() {
IntializeScrollTriggers();
});
$(window).scroll(function (event) {
scrollCompute();
});
function scrollCompute()
{
if($('#container').height() > $('#sidebar').height()) {
if(($('#sidebar').height() + 10)> $(this).height()) {
triggerY2 = $('#container').offset().top + $('#container').height() - parseFloat($('#container').css('marginTop').replace(/auto/, 0));
var scrollY = $(this).scrollTop() + $(this).height();
if (scrollY >= triggerY) {
$('#sidebar').addClass('fixed').css('left', parseFloat($('#content').width()) + 10);
if(scrollY >= triggerY2) {
$('#sidebar').css('bottom', scrollY - triggerY2);
}
else {
$('#sidebar').css('bottom', '0px');
}
} else {
$('#sidebar').removeClass('fixed').css('left', '').css('bottom', '');
}
}
else {
var scrollY = $(this).scrollTop();
if (scrollY >= triggerY) {
$('#sidebar').addClass('fixed').css('left', parseFloat($('#content').width()) + 10).css('top', '10px');
}
else {
$('#sidebar').removeClass('fixed').css('left', '').css('top', '');
}
}
}
}
function IntializeScrollTriggers() {
$('#sidebar').removeClass('fixed').css('left', '').css('bottom', '').css('top', '');
if(($('#sidebar').height() + 10) > $(this).height()) {
triggerY2 = $('#container').offset().top + $('#container').height() - parseFloat($('#container').css('marginTop').replace(/auto/, 0));
triggerY = $('#sidebar').offset().top + $('#sidebar').height() - parseFloat($('#sidebar').css('marginTop').replace(/auto/, 0));
}
else {
triggerY = $('#sidebar').offset().top - 10 - parseFloat($('#sidebar').css('marginTop').replace(/auto/, 0));
}
scrollCompute();
}
- //Enables the dynamic static menu
- var triggerY, triggerY2;
- IntializeScrollTriggers();
-
- $(window).resize(function() {
- IntializeScrollTriggers();
- });
-
- $(window).scroll(function (event) {
- scrollCompute();
- });
-
- function scrollCompute()
- {
- if($('#container').height() > $('#sidebar').height()) {
- if(($('#sidebar').height() + 10)> $(this).height()) {
- triggerY2 = $('#container').offset().top + $('#container').height() - parseFloat($('#container').css('marginTop').replace(/auto/, 0));
- var scrollY = $(this).scrollTop() + $(this).height();
- if (scrollY >= triggerY) {
- $('#sidebar').addClass('fixed').css('left', parseFloat($('#content').width()) + 10);
- if(scrollY >= triggerY2) {
- $('#sidebar').css('bottom', scrollY - triggerY2);
- }
- else {
- $('#sidebar').css('bottom', '0px');
- }
- } else {
- $('#sidebar').removeClass('fixed').css('left', '').css('bottom', '');
- }
- }
- else {
- var scrollY = $(this).scrollTop();
- if (scrollY >= triggerY) {
- $('#sidebar').addClass('fixed').css('left', parseFloat($('#content').width()) + 10).css('top', '10px');
- }
- else {
- $('#sidebar').removeClass('fixed').css('left', '').css('top', '');
- }
- }
- }
- }
-
- function IntializeScrollTriggers() {
- $('#sidebar').removeClass('fixed').css('left', '').css('bottom', '').css('top', '');
-
- if(($('#sidebar').height() + 10) > $(this).height()) {
- triggerY2 = $('#container').offset().top + $('#container').height() - parseFloat($('#container').css('marginTop').replace(/auto/, 0));
- triggerY = $('#sidebar').offset().top + $('#sidebar').height() - parseFloat($('#sidebar').css('marginTop').replace(/auto/, 0));
- }
- else {
- triggerY = $('#sidebar').offset().top - 10 - parseFloat($('#sidebar').css('marginTop').replace(/auto/, 0));
- }
-
- scrollCompute();
- }
Que podría darle ideas sobre cómo hacerlo, usted será probablemente tienen costumbre escribir su propia solución pero con lo anterior que puede darle una idea de cómo empezar. Recuerde que esto es dependiente de la biblioteca jQuery.
Ozzu Hosting - Want your website on a fast server like Ozzu?