2012-03-31 14 views
3

Ich arbeite an einer ziemlich voll-Site mit jQuery (wenn die Lösung nicht jQuery, das ist auch in Ordnung).

Die Website ist mit Abschnitten gebaut, die die Höhe des Fensters der Größe mit:

 

    $(window).resize(function() { 
    $("section").height($(window).height()) 
    }).resize() 


Dieser Teil brillant funktioniert. Ich habe das Scrollen deaktiviert, indem ich den Überlauf des Body- und HTML-Elements beseitige und der Benutzer kann durch die Website navigieren, indem er relative Links (mit localScroll) verwendet.

Mein Problem ist, dass, sobald der Benutzer zu einem Abschnitt und dann Größe des Fensters geändert hat, ist der Körper nicht mehr im Einklang mit der Oberseite des Abschnitts.

Gibt es eine Möglichkeit, das Fenster an der Spitze eines Elements zu halten, egal was passiert?

+0

Warum CSS nicht verwenden, um das Element mit der obersten Position absolut auf 0px zu positionieren '{position: absolute; oben: 0px} '? – iambriansreed

+0

@iambriansreed: Weil dies den Zweck der Verwendung von Scrollen zum Animieren zwischen den Seiten vereitelt. – icktoofay

+0

Eine Demo würde hier sehr helfen. – iambriansreed

Antwort

1

Beachten Sie, welcher Abschnitt aktuell ist. Wenn das Fenster in der Größe geändert wird, können Sie die Bildlaufleiste des Fensters an den Anfang dieses Abschnitts setzen. Zum Beispiel:

var currentSection = $('section:eq(0)'); 
var jqWindow = $(window).resize(function() { 
    $('section').height(jqWindow.height()); 
    jqWindow.scrollTop(currentSection.offset().top); 
}); 
+0

Es scheint, dass das 'localScroll'-Plugin keinen schönen Haken bietet, um zu finden, wann es irgendwo scrollt, was bedauerlich ist. – icktoofay

+0

Prost für das! Ich habe es tatsächlich etwas modifiziert, um mit der Hashfunktion von localScroll zu arbeiten. – interactronaut

Verwandte Themen