Safari: Medienabfrage wird nicht mit der erwarteten Breite ausgelöst

8

Ich habe eine CSS-Medienabfrage geschrieben so -

%Vor%

Dies funktioniert in allen Browsern mit Ausnahme von Safari 10.0.4 und niedriger. Safari scheint die Medienabfragen anders zu behandeln.

Andere Browser scheinen window.innerWidth als Darstellungsfeldbreite zu verwenden, um Medienabfragen auszulösen, aber Safari scheint document.documentElement.clientWidth als Darstellungsfeldbreite zu verwenden und löst die Medienabfragen entsprechend aus.

Ich kann einen Unterschied von 15px zwischen dem tatsächlichen und dem erwarteten Haltepunkt sehen. Ich bin auf der Suche nach einer browserübergreifenden Möglichkeit, mit diesem Problem umzugehen. Gedanken sind willkommen, danke im Voraus.

    
vijay tyagi 18.05.2017, 09:23
quelle

4 Antworten

4

Die Fensterbreite vs tatsächliche Breite ist eigentlich ein super interessantes Thema. Snuggug hat eine wirklich ausführliche Erklärung dafür , aber kurz gesagt, es basiert darauf, wie die Bildlaufleisten in verschiedenen Browsern platziert sind.

Einige Browser überlagern die Bildlaufleiste oben des Inhalts / der Website. Andere Browser kürzen die Breite des Inhalts / der Site und haben die Bildlaufleiste next . Dies führt offensichtlich zu Diskrepanzen bei der Berechnung der Breite des Ansichtsfensters durch verschiedene Browser.

Ein mögliches Problem ist die Verwendung von em als Maßeinheit.

Es ist wichtig, daran zu denken, dass em eine Maßeinheit ist, die auf Ihrer aktuellen Schriftgröße basiert, und daher für die Interpretation durch den Browser offen ist.

Abhängig von font-family und gesamt font-size liegt 60em normalerweise im Bereich von 800px. Was bedeutet, dass Ihre Abfrage spezifischer wie folgt aussehen würde:

%Vor%

Wenn Sie sich nicht sicher sind, ob das Styling überschrieben wird, können Sie immer eine wichtige Regel anwenden:

%Vor%

Wenn Sie nicht das !important -Tag in Ihrem CSS verwenden möchten, müssen Sie sicherstellen, dass Sie nach den beiden unten aufgeführten Szenarien Ausschau halten:

CSS liest von oben nach unten

Dies bedeutet, dass wenn Sie eine Regel für Ihr .left -Element angegeben haben, diese vor Ihrer Medienabfrage und nicht nach

platziert werden muss

Das FALSCHE Layout würde folgendermaßen aussehen:

%Vor%

Das KORREKTE Layout würde folgendermaßen aussehen:

%Vor%

Das nächste zu beachtende Bit ist:

Geschachtelte CSS-Selektoren haben Vorrang

Verwenden Sie die gleiche Anzahl von übergeordneten Selektoren (oder mehr) in Ihrer Medienabfrage-Regel.

Die FALSCHE Reihe von Selektoren:

%Vor%

Die CORRECT-Selektoren:

%Vor%     
Frits 25.05.2017 12:25
quelle
1

Verwenden Sie px (Pixel) anstelle von em . em ist nicht festgelegt, aber es ist relativ. für verschiedene Browser unterschiedlich geparst.

%Vor%     
Muhammad Ashfaq 24.05.2017 11:20
quelle
1

probiere diesen css hack:

%Vor%

Quelle: Ссылка

    
Pierre Météyé 24.05.2017 13:26
quelle
-1

Sie müssen die Medienabfrage nach der .left-Klasse gemäß der css-Regel verwenden

Zum Beispiel

%Vor%     
Kumar Rahul 26.05.2017 05:55
quelle