En face de "scrollTop" à jQuery

jQuery a une fonction appelée scrollTop qui peut être utilisée pour trouver le nombre de pixels cachés au-dessus de la vue de page actuelle.

Je ne sais pas vraiment pourquoi, mais il n'y a pas de fonction scrollBottom qui renvoie le nombre de pixels sous la vue page courante.

Est-il un plugin jQuery qui ajoute cette fonctionnalité? Ou cela va-t-il nécessiter des calculs complexes avec la hauteur de la fenêtre/du document et la valeur du scrollTop?

24
demandé sur Zachary Wright 2010-11-16 00:18:02
la source

8 ответов

vous pourriez faire un plugin assez simple pour cela:

$.fn.scrollBottom = function() { 
  return $(document).height() - this.scrollTop() - this.height(); 
};

puis l'appeler sur n'importe quel élément que vous vouliez, par exemple:

$(window).scrollBottom();  //how many pixels below current view
$("#elem").scrollBottom(); //how many pixels below element
36
répondu Nick Craver 2010-11-16 02:27:52
la source

peut-être que cela aidera comment dire à jquery de faire défiler vers le bas, parce qu'il n'y a vraiment pas de fonction opposée. C'est le même problème avec scrollLeft - il n'y a pas de scrollRight

1
répondu VKolev 2010-11-16 00:26:27
la source

Si vous voulez faire Défiler vers le Bas (en Face de la "scrollTop"), essayez d'utiliser la position verticale sur l'argument. Comme ceci:

$(document).ready(function(){
    $("button").click(function(){
                           //position on pixeles
        $("body").scrollTop(1300);
    });
});

Le haut du corps sera la suivante: $("body").scrollTop(0);

1
répondu Carlos Román 2015-06-16 19:56:42
la source

Vous pouvez essayer scrollTo plugin et faire quelque chose comme:

$.scrollTo( document.height )
0
répondu Fernando Rybka 2010-11-16 00:31:10
la source
function scrollBottom()
{
    return $( window ).scrollTop() + $( window ).height();
}

// example usage
$( '#footer' ).css( 'top', scrollBottom() - $( '#footer' ).height() );
0
répondu rushkeldon 2012-12-27 12:49:46
la source

comme le comportement par défaut de scrollTop passe à 0 en passant une valeur négative, j'ai fait cette fonction qui gère scrollTop et simule un "scrollDown".

Si anchor_pos est négatif (donc c'est au-dessus de ma position de défilement actuelle), j'ai soustraire la valeur de courant de la position de défilement (comme il a une valeur négative, je suis en utilisant le signe+)

function jumpToAnchor(scrollable_div_selector, anchor_selector)
{
    anchor_pos = $(anchor_selector).position().top;

    //check if negative number
    if (anchor_pos < 0)
    {
        anchor_pos = $(scrollable_div_selector).scrollTop() + anchor_pos; //anchor_pos is negative, so i'm substracting it
    }

    $(scrollable_div_selector).scrollTop(anchor_pos);
}
0
répondu SaganTheBest 2015-01-20 14:47:26
la source

C'est comment j'ai calculé la distance entre le bas de l'élément à la fin du document:

$(document).height() - ($('#element').offset().top + $('#element').height());
0
répondu Alex W 2015-01-20 19:50:33
la source

essaye ceci:

return this[0].scrollHeight - this.scrollTop() - this.height();
0
répondu Jirair He 2017-07-20 06:51:30
la source

Autres questions sur