Bei der Verwendung von Twitter Bootstrap neben benutzerdefinierten Stilen tritt ein häufiges Problem auf, wenn versucht wird, die Elementreihenfolge zu ändern basierend auf der Größe des Ansichtsfensters unter Verwendung von CSS-Medienabfragen und $(window).width() von jQuery. In diesem Szenario liegt das Problem in der beobachteten Differenz zwischen der von $(window).width() berechneten Breite und der durch die CSS-Medienabfrage ermittelten Breite. Typischerweise ist der CSS-Breitenwert etwas kleiner, wodurch eine Diskrepanz entsteht, die zu einer falschen Elementpositionierung führen kann.
Mögliche Ursachen und Lösungen:
Eine mögliche Ursache für diese Diskrepanz ist der Ausschluss der Breite der Bildlaufleiste in der $(window).width()-Berechnung. Um dieses Problem zu beheben, verwenden Sie stattdessen $(window).innerWidth(), das die Breite der Bildlaufleiste einschließt. Dies ist jedoch möglicherweise keine ideale Lösung, da die Breite der Bildlaufleiste von Browser zu Browser unterschiedlich ist.
Eine zuverlässigere Lösung ist die Verwendung der Funktion window.matchMedia(), die eine konsistente Berechnung der Breite des Ansichtsfensters ermöglicht und vollständig ist kompatibel mit CSS-Medienabfragen. Der folgende Code veranschaulicht seine Verwendung:
function checkPosition() { if (window.matchMedia('(max-width: 767px)').matches) { //... } else { //... } }
Für ältere Browser, die window.matchMedia() nicht unterstützen, sollten Sie die Verwendung der von der Modernizr-Bibliothek bereitgestellten mq-Methode in Betracht ziehen. Diese Methode bietet umfassende Unterstützung für Browser, die Medienabfragen in CSS verstehen:
if (Modernizr.mq('(max-width: 767px)')) { //... } else { //... }
Durch den Einsatz dieser alternativen Methoden können Sie die Konsistenz zwischen Ihren CSS-Medienabfragen und jQuery-Breitenberechnungen sicherstellen und die daraus resultierenden Diskrepanzen beheben Variationen in der Größe des Ansichtsfensters.
Das obige ist der detaillierte Inhalt vonWarum unterscheidet sich $(window).width() von der Berechnung der Medienabfragebreite und wie kann ich diese Diskrepanz beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!