Ich habe den folgenden JQuery-Code:
$(document).ready(function () {
var $containerHeight = $(window).height();
if ($containerHeight <= 818) {
$('.footer').css({
position: 'static',
bottom: 'auto',
left: 'auto'
});
}
if ($containerHeight > 819) {
$('.footer').css({
position: 'absolute',
bottom: '3px',
left: '0px'
});
}
});
Das einzige Problem ist, dass dies nur funktioniert, wenn der Browser zum ersten Mal geladen wird. Ich möchte containerHeight
auch überprüft werden, wenn die Größe des Fensters geändert wird.
Irgendwelche Ideen?
$(window).resize(function(){...})
Antworten:
Hier ist ein Beispiel für die Verwendung von jQuery, Javascript und CSS zur Behandlung von Größenänderungsereignissen.
(CSS, wenn Sie die beste Wahl sind, wenn Sie nur die Größe ändern (Medienabfragen))
http://jsfiddle.net/CoryDanielson/LAF4G/
CSS
Javascript
jQuery
Wie kann ich verhindern, dass mein Größenänderungscode so oft ausgeführt wird?
Dies ist das erste Problem, das Sie beim Binden zur Größenänderung bemerken werden. Der Größenänderungscode wird als LOT bezeichnet, wenn der Benutzer die Größe des Browsers manuell ändert, und kann sich ziemlich nervös anfühlen.
Um zu begrenzen, wie oft Ihr Größenänderungscode aufgerufen wird, können Sie die Debounce- oder Throttle- Methoden aus den Unterstrich- und Lowdash- Bibliotheken verwenden.
debounce
führt Ihren Größenänderungscode nur X Millisekunden nach dem letzten Größenänderungsereignis aus. Dies ist ideal, wenn Sie Ihren Größenänderungscode nur einmal aufrufen möchten, nachdem der Benutzer die Größe des Browsers geändert hat. Es ist gut zum Aktualisieren von Grafiken, Diagrammen und Layouts geeignet, deren Aktualisierung jedes einzelnen Größenänderungsereignisses teuer sein kann.throttle
führt Ihren Größenänderungscode nur alle X Millisekunden aus. Es "drosselt", wie oft der Code aufgerufen wird. Dies wird bei Größenänderungsereignissen nicht so oft verwendet, aber es lohnt sich, sich dessen bewusst zu sein.Wenn Sie keinen Unterstrich oder Lowdash haben, können Sie eine ähnliche Lösung selbst implementieren: JavaScript / JQuery: $ (Fenster) .resize Wie wird nach Abschluss der Größenänderung ausgelöst?
quelle
Verschieben Sie Ihr Javascript in eine Funktion und binden Sie diese Funktion an die Fenstergröße.
quelle
jQuery verfügt über einen Ereignishandler für die Größenänderung, den Sie an das Fenster anhängen können: .resize () . Also, wenn Sie sagen
$(window).resize(function(){/* YOUR CODE HERE */})
eingeben, wird Ihr Code jedes Mal ausgeführt die Fenstergröße geändert wird.Sie möchten den Code also nach dem Laden der ersten Seite und bei jeder Größenänderung des Fensters ausführen. Daher sollten Sie den Code in eine eigene Funktion ziehen und diese Funktion in beiden Fällen ausführen.
Siehe: Browserübergreifendes Fenster Größenänderungsereignis - JavaScript / jQuery
quelle
$(function() { $(window).resize(positionFooter).triggerHandler('resize'); });
Versuchen Sie diese Lösung. Wird nur ausgelöst, sobald die Seite geladen wurde, und dann während der Fenstergröße bei vordefinierter Größe
resizeDelay
.quelle
resizer();
direkt nach dem Einstellen des Intervalls. Und weil das aufdoResize
eingestellt ist,true
wird es ausgelöst, wenn das Dokument fertig ist.resizeDelay
ob einedoResize
Variable auf gesetzt isttrue
. UnddoResize
ist auch auftrue
on eingestellt$(window).resize()
. Sie ändern also die Fenstergröße, diedoResize
auftrue
und während der nächsten Prüffunktion gesetztresizer()
wird.Geben Sie Ihrer anonymen Funktion einen Namen und dann:
http://api.jquery.com/category/events/
quelle
kann es auch verwenden
quelle
Dies führt dazu, dass Ihr Handler für die Größenänderung beim Ändern der Fenstergröße und beim Bereitstellen von Dokumenten ausgelöst wird. Natürlich können Sie Ihren Größenänderungshandler auch außerhalb des dokumentenfertigen Handlers anhängen, wenn Sie möchten
.trigger('resize')
stattdessen beim Laden der Seite ausgeführt werden .AKTUALISIEREN : Hier ist eine weitere Option, wenn Sie keine anderen Bibliotheken von Drittanbietern verwenden möchten.
Diese Technik fügt Ihrem Zielelement eine bestimmte Klasse hinzu, sodass Sie den Vorteil haben, das Styling nur über CSS zu steuern (und Inline-Styling zu vermeiden).
Außerdem wird sichergestellt, dass die Klasse nur hinzugefügt oder entfernt wird, wenn der tatsächliche Schwellenwert ausgelöst wird, und nicht bei jeder Größenänderung. Es wird nur an einem Schwellenwert ausgelöst : Wenn sich die Höhe von <= 818 auf> 819 oder umgekehrt ändert und nicht mehrmals in jeder Region. Es geht nicht um eine Änderung der Breite .
Als Beispiel haben Sie möglicherweise einige Ihrer CSS-Regeln:
quelle
Benutze das:
quelle
Sie können
resize
mit.resize()
Ihrem Code binden und ihn ausführen, wenn die Größe des Browsers geändert wird. Sie müssenelse
Ihrerif
Anweisung auch eine Bedingung hinzufügen , damit Ihre CSS-Werte die alten und die neuen umschalten, anstatt nur die neuen festzulegen.quelle