Moin!
Habe eine schöne Idee gefunden:
body {font-size: 100.1%;} // für den IE
html>body {font-size: 16px;} // für alle anderen Browser... und den Rest dann in em.
Davon halte ich nichts.
Du setzt als Standardschriftgröße für alle Browser (außer IE) 16px. Das ist legitim. Die weitere Verarbeitung geschieht dann mit relativen Schriftgrößen. Das halte ich für unnötig aufwendig, denn relative Größenangaben haben unangenehme Nebeneffekte.
Zwei Beispiele:
Setzt du eine kleinere Schrift ein, indem du 0.85em angibst, kannst du innerhalb dieses Bereichs nicht einfach die Normalgröße wiederherstellen, indem du 1em angibst, oder 1.15em, sondern es ist der Kehrwert von 0.85 erforderlich: 1.176470588em - kürzt du die Zahlenangabe weg, kommt es irgendwo zu Rundungsfehlern, die sich in Abweichungen von einem Pixel äußern können.
Zweitens: Verschachtelte Elemente müssen im CSS aufwendiger behandelt werden. Angenommen, du hast zwei ineinander verschachtelte Listen, und definierst für <li> eine Schrift von 0.8em - dann hat die innere Schrift (in <ul><li><ul><li>) nur noch eine Größe von 0.64em.
Das sind natürlich alles keine riesigen, unüberwindlichen Probleme, aber wenn du ohnehin eine fixe Schriftgrößenbasis von 16px=1em hast, kannst du dir diese ganzen Probleme auch sparen, indem du gleich Pixel als Größenangabe verwendest.
Und der zweite Punkt ist: Deine Lösung führt nur dann zu identischen Größen im IE, wenn dort als Standardschriftgröße 16 Pixel eingestellt sind.
Du versuchst also, die Flexibilität von relativen Größenangaben zu kombinieren mit deinem Wunsch nach festen Schriftgrößenangaben, und erzeugst dir damit unter Umständen ärgerlichere Nebeneffekte, als wenn du einfach akzeptierst, dass der IE zwar in seiner Standardeinstellung keine Schriftgrößenänderung erlaubt, wenn man px als Einheit verwendet, und damit ein wesentlich einfacheres CSS-Leben hättest.
Unter dem Strich könnte man es zusammenfassen zu:
Alle anderen Browser außer dem IE sind von dir zu festen Schriftgrößen gezwungen, egal ob du direkt px oder diese px/em-Kombi verwendest, und sie können die Schriftgröße per Zoom benutzerdefiniert trotzdem problemlos ändern. Es macht also keinen Unterschied, welche Methode du verwendest (abgesehen von den em-Problemen oben).
Bei dem IE hoffst du bei deiner px/em-Kombi darauf, dass die Standardeinstellung der Schriftgröße von 16px nicht verändert ist. Nähmst du px direkt, müßtest du hoffen, dass all diejenigen Benutzer, denen deine Schrift zu klein ist, wissen, dass man die Standardeinstellung des IE ändern kann, um auch px-Angaben vergrößern oder verkleinern zu können. Du bist also bei beiden Methoden drauf angewiesen, dass der IE "passend" eingestellt ist, ansonsten hast du
a) entweder die falsche Basisschriftgröße oder
b) eine nicht skalierbare Website (was keinem normalen IE-Benutzer auffallen wird, weil eigentlich alle Massenwebsites derzeit auf px-Angaben setzen, die Skalierung des IE also sowieso nirgendwo greift - und alle IE-Benutzer, die das dennoch benötigen, werden den IE passend eingestellt haben, dass sie die Schriftgröße dennoch skalieren können - sofern sie nicht sowieso einen anderen Browser benutzen).
Müsste man nur noch schauen, was der IE7 macht:
Ob er px skalieren kann und ob er html>body weiterhin nicht lesen kann.
Mit Pech passiert genau das, was du nicht gebrauchen kannst, und was nicht passieren würde, wenn du dich einfach dazu bekennen würdest, deine Schrift- und sonstigen Größen in Pixeln anzugeben - was du defacto tust.
Dieser Trick ist in meinen Augen ein ziemlicher Etikettenschwindel.
- Sven Rautenberg
My sssignature, my preciousssss!