J'ai créé une fonction qui fait défiler un élément enfant donné dans la vue de son parent. Il se présente comme suit:Avis jQuery: Comment améliorer cette fonction pour faire défiler des éléments?
function keepScrolledOver(elem)
{
frame = elem.parent();
var scrollPos = frame.scrollTop();
var offset = elem.attr("offsetTop");
// If the element is scrolled too high...
if(offset < scrollPos)
{
frame.scrollTop(offset);
// frame.attr("scrollTop", offset);
}
// If the element is scrolled too low...
else
{
var frameHeight = frame.height();
var offsetBottom = offset + elem.height();
var scrollBottom = scrollPos + frameHeight;
if(offsetBottom > scrollBottom)
{
// frame.attr("scrollTop", offsetBottom);
if(frameHeight < offsetBottom)
frame.scrollTop(offsetBottom - frameHeight);
// frame.attr("scrollTop", offsetBottom - frameHeight);
}
}
}
Jusqu'à présent, pour mon application web Firefox (Firefox est tout ce que je l'ai testé sur ce jour, je veux dire), cela fonctionne très bien. Le seul problème est que pour les éléments défilant trop bas, il a toujours tendance à défiler juste un peu au-delà de l'élément cible plutôt que jusqu'à la fin. Je ne suis pas sûr si le rembourrage d'élément a quelque chose à faire avec ou si mes maths juste sucent.
Quelqu'un at-il des idées brillantes sur la façon d'améliorer cela?