Heim >Web-Frontend >CSS-Tutorial >Warum melden $(window).width() und CSS-Medienabfragen unterschiedliche Ansichtsfensterbreiten?

Warum melden $(window).width() und CSS-Medienabfragen unterschiedliche Ansichtsfensterbreiten?

Susan Sarandon
Susan SarandonOriginal
2024-12-10 09:56:10662Durchsuche

Why Do $(window).width() and CSS Media Queries Report Different Viewport Widths?

Inkonsistent gemessene Ansichtsfensterbreite zwischen $(window).width() und CSS-Medienabfragen

Bei Verwendung von $(window).width von jQuery () Um die Breite des Ansichtsfensters zu bestimmen, kann es zu Abweichungen von der durch CSS-Medienabfragen berechneten Breite kommen. Dieser Unterschied kann auf verschiedene Faktoren zurückgeführt werden, einschließlich der Breite der Bildlaufleiste des Browsers.

Um dieses Problem zu beheben, sollten Sie window.matchMedia() verwenden. Diese Methode liefert genaue Breitenberechnungen, die mit CSS-Medienabfragen konsistent sind. Es wird von allen modernen Browsern unterstützt und kann wie folgt implementiert werden:

function checkPosition() {
    if (window.matchMedia('(max-width: 767px)').matches) {
        //...
    } else {
        //...
    }
}

Alternative Lösung mit Modernizr:

Wenn die Browserkompatibilität ein Problem darstellt, können Sie es verwenden die von Modernizr bereitgestellte mq-Methode. Es unterstützt alle Browser, die Medienabfragen verstehen.

if (Modernizr.mq('(max-width: 767px)')) {
    //...
} else {
    //...
}

Beachten Sie, dass die Verwendung von $(window).innerWidth() zur Berechnung der Breite des Ansichtsfensters unter Berücksichtigung der Bildlaufleiste möglicherweise nicht immer die optimale Lösung ist Die Breite der Bildlaufleiste kann je nach Browser variieren.

Das obige ist der detaillierte Inhalt vonWarum melden $(window).width() und CSS-Medienabfragen unterschiedliche Ansichtsfensterbreiten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn