1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| // ------------------------------------------------
// MENU SIDE : Fixer au scroll si hauteur < fenetre
$(function(){
var navSide = $('#sideSousNav'); // id du sous-menu
if( navSide.length )
{
var navSidetop = navSide.offset().top; // position initial du sous-menu
$(window).scroll(function () // Au scroll on déclenche la fonction
{
// le div '#bodyWrap1' va du haut de la fenêtre jusqu'à la limite la plus basse du sous-menu (ici, le footer n'est pas inclus : il reste en dessous)
// (N.B. on peut remplacer par 'body', si le sous-menu peut aller jusqu'en bas de la page)
var navSideHok = ($('#bodyWrap1').height() - navSide.height() );
// var navSideHok = ($('#bodyWrap1').height() - navSide.height() - 60); // (60 à cause de l'arrondi en bas)
// dès que le menu atteint le haut de la fenêtre, on le fixe
if( navSide.height() < $(window).height() && $(this).scrollTop() > navSidetop )
{
navSide.addClass('navSideBoxFixTop');
// on garde la largeur de la sidebar
navSide.css( { 'width':$('#pageWrap2 aside.pageSideL').width()+'px' } );
// si on atteint le bas de la div contenante, on ajuste la position
if( $(this).scrollTop() > navSideHok )
{
navSide.css({ 'top':(navSideHok - $(this).scrollTop())+'px' });
// sinon, on fixe en haut
} else {
navSide.css({ 'top':'0px' });
}
} else { // retour à la normal
navSide.removeClass('navSideBoxFixTop');
navSide.width( 'auto' );
}
});
}
});
// ------------------------------------------------ |