So setzen Sie die Min / Max-Werte für jQuery scrollspy bei der Größenänderung des Fensters zurück
Frage
Ich benutze das scrollspy plugin und ich brauche so setzen Sie die Min / Max-Werte zurück, wenn die Fenstergröße geändert wird, weil der erste Abschnitt die Größe in der Höhe ändert und alle betrifft position.top
der folgenden Abschnitte.Was wäre der beste Weg, dies zu tun?
$('section').each(function() {
var position = $(this).position();
$(this).scrollspy({
min: position.top - $header.outerHeight(),
max: position.top + $(this).outerHeight() - $header.outerHeight(),
onEnter: function(element) {
$('#main-menu').find('a[href$="'+$(element).attr('id')+'"]').addClass('cur');
/* window.location.hash = 'panel-'+$(element).attr('id'); */
},
onLeave: function(element) {
$('#main-menu').find('a[href$="'+$(element).attr('id')+'"]').removeClass('cur');
}
});
});
Lösung
Versuchen Sie, die Position der Schnittelemente auf relativ zu setzen.
position:relative;
Viel Spaß beim Codieren :)
Andere Tipps
Ich hatte ein ähnliches Problem, aber ich konnte meine Elemente nicht positionsbezogen ändern, da es sich bei allen um benutzerdefinierte Animationen handelt und sie absolut positioniert sein mussten.
Das war mein Ansatz.
// Make sure to update Scrollspy once the last resize has fired
var rtime = new Date(1, 1, 2000, 12,00,00);
var timeout = false;
var delta = 200;
$(window).resize(function() {
rtime = new Date();
if (timeout === false) {
timeout = true;
setTimeout(resizeend, delta);
}
});
function resizeend() {
if (new Date() - rtime < delta) {
setTimeout(resizeend, delta);
} else {
timeout = false;
$(window).unbind("scroll");
// Your Scrollspy function
}
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow