Sto lavorando a una barra laterale a scorrimento (appiccicosa). Il problema è che la maggior parte delle barre laterali appiccicose non prende in considerazione il fatto che la barra laterale può essere più alta della vista (ad esempio se molti elementi vengono aggiunti al carrello (barra laterale)). Qual è quello che sto cercando di risolvere. Questi sono i requisiti:Barra laterale adesiva jQuery avanzata
Se l'altezza della barra laterale è più alto allora la finestra, dovrebbe scorrere il contenuto e la parte inferiore del div deve aderire alla nella parte inferiore della finestra durante lo scorrimento più in basso .
Se l'altezza della barra laterale è più alto allora la finestra, il div sottostanti devono essere presentati solo quando si è in fondo alla pagina .
Quando l'utente esegue il backup, la barra laterale torna in alto e torna in cima al viewport.
Se l'altezza della barra laterale è inferiore al viewport, dovrebbe essere appiccicosa dall'alto quando si scorre verso il basso.
Quindi tutto sommato un po 'di funzionalità e non così semplice (credo). Il più vicino che ho visto a quello che sto cercando di ottenere è questo esempio: http://demo.techbrij.com/730/fix-sidebar-scrolling-jquery.php ma il modo in cui il codice è scritto non si adatta al mio.
Finora, questo è quello che ho fatto: DEMO
E il codice jQuery che ho usato:
jQuery(document).ready(function($) {
var $sidebar = $('.sidebar'),
$content = $('.content');
if ($sidebar.length > 0 && $content.length > 0) {
var $window = $(window),
offset = $sidebar.offset(),
timer;
$window.scroll(function() {
clearTimeout(timer);
timer = setTimeout(function() {
if ($content.height() > $sidebar.height()) {
var new_margin = $window.scrollTop() - offset.top;
if ($window.scrollTop() > offset.top && ($sidebar.height()+new_margin) <= $content.height()) {
// Following the scroll...
$sidebar.stop().animate({ marginTop: new_margin });
} else if (($sidebar.height()+new_margin) > $content.height()) {
// Reached the bottom...
$sidebar.stop().animate({ marginTop: $content.height()-$sidebar.height() });
} else if ($window.scrollTop() <= offset.top) {
// Initial position...
$sidebar.stop().animate({ marginTop: 0 });
}
}
}, 100);
});
}
});
Hmmm. Non l'ho preso in considerazione per la mia intestazione/libreria di elementi. Credo di avere un nuovo problema da affrontare. :-) http://underpull.github.com/Balloon/ – Vinay