2017-02-24 2 views
1

ich auf einer Seite arbeiten, dieÄndern font-size auf Wurzel wirkt sich nicht auf @media fragt

html { 
    font-size: 62.5%; 
} 

hat Das bedeutet 1rem = 10px statt 1rem = 16px So weit, so gut.

Das Problem ist, dass es @media queries nicht betrifft.

/* 
it should change at 600px and not 960px. 
the @media ignores the 62.5%; 
*/ 
@media (min-width: 60rem) { 
    .el { 
     background: blue; 
    } 
} 

Überprüfen Sie diesen Codepen, um das Problem zu sehen.

http://codepen.io/sandrina-p/pen/bqGZjE

ich auf einem Retina-Monitor getestet, mit Chrome und Firefox. Auf Safari tritt das Problem nicht auf.

Irgendeine Lösung?

+0

Es funktioniert auf 960px. in Windows Chrome 1920 Auflösung. Ich habe meinen Browser auf 960px skaliert und es funktioniert einwandfrei. – locateganesh

+0

Ich will es bei 600px, nicht 960px ändern, weil die Schriftgröße 62,5% ist –

Antwort

1

Ich habe das Problem gefunden. In @media müssen Sie em verwenden und es wird immer die Standardgröße des Browsers lesen und Ihre benutzerdefinierte font-size ignorieren. Das gleiche passiert nicht mit rem. Also in diesem Fall müssen Sie 37.5em (600/16) einstellen, und es wird die auf 600px in jedem Browser einschließlich Safari ändern.

https://zellwk.com/blog/media-query-units/

(...) die einzige Einheit, die konsequent in allen vier Browsern ausgeführt ist em. Es gibt keine Unterschiede zwischen em und rem mit Ausnahme von Fehlern, die in Safari gefunden wurden. (...) Leider blieben px-Medienabfragen im dritten Experiment bei 400px, was es zu einem No-Go macht, wenn Sie Benutzer unterstützen möchten, die den Schriftgrößenwert ihres Browsers ändern. Daher ist meine Schlussfolgerung nach diesen Experimenten: Verwenden Sie em Medienabfragen.

@media screen and (max-width: 37.5em) { 
    .el { 
     background: blue; 
    } 
} 
+1

Ja, ich habe auch gerade in Mac-Safari-Media-Abfragen herausgefunden, die 'rem' einfach nicht reflektieren und gute Forschung zu' em' und 'rem' wirklich nett machen. – locateganesh

-1

Versuchen Sie, diese

<div class="el"> 
    hey there 
</div> 

// =========== basic template =========== // 
$safeArea: 1rem; 
body { 
    font-family: sans-serif; 
} 

// ======== actual codepen code ========= // 

html { 
    font-size: 62.5%; 
} 

.el { 
    background: red; 
    font-size: 1.6rem; 
} 

/* it should change at 600 px and not 960px. 
the @media ignores the 62.5%; 
*/ 
@media screen and (max-width: 60rem) { 
    .el { 
     background: blue; 
    } 
} 

dieses codepen sehen - http://codepen.io/anon/pen/aJbxOQ

+0

Hmm, nop, es ändert sich immer noch bei 960px, ich will es bei 600px ändern –

0

Nein, es nicht mit Ihnen htmlfont-size oder Ihre .elfont-size nichts zu tun hat. Weil 1rem 16px ist. Also musst du es nach 16px berechnen.

@media (min-width: 37.5rem) { 
    .el { 
     background: blue; 
    } 
} 

Dies wäre Ihre 600px Medienabfragen bricht.

+0

Nop, so, wenn Sie den Code auf Safari öffnen, Es wird mit 375px und nicht mit 600px rendern, da Safari 62,5% lesen kann. –

+0

Ich denke, Sie sollten dies nicht mit Codepen-Code testen. Erstellen Sie einfach eine lokale Datei und fügen Sie das Meta-Viewport '' hinzu und testen Sie dies. – locateganesh

Verwandte Themen