So setzen Sie die Min / Max-Werte für jQuery scrollspy bei der Größenänderung des Fensters zurück

StackOverflow https://stackoverflow.com//questions/22063279

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');
        }
    });
});
War es hilfreich?

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
scroll top