OK - für den Anfang sollten Sie Ems für so viele Messungen wie möglich in Ihrer Benutzeroberfläche verwenden. Zumindest Größe alle Ihre Textelemente mit Ems (anstatt Pixel oder%). Wenn es möglich ist, die Breite von Layoutblöcken in Ems festzulegen, wird die App auch proportional dazu skaliert. Wenn Sie alle Dimensionen in Ems festlegen können, ist Ihre gesamte App visuell skalierbar. Der Schlüssel zu Ems besteht darin, dass sie relativ zur Schriftgröße ihres übergeordneten Elements skaliert sind. Das bedeutet, dass Sie die Größe des gesamten Textes proportional anpassen können, indem Sie die Schriftgröße des Körperelements anpassen (seit alles ist relativ zum Körper).
Der letzte Schritt besteht darin, ein Stück JavaScript zu verwenden, um die Breite des Ansichtsfensters zu erkennen und die Schriftgröße des Körpers entsprechend einzustellen. Je nachdem, wie feingranuliert Sie die Skalierung steuern möchten, können Sie entweder Klassen für das body-Element verwenden, um einen Satz vordefinierter Werte einzurichten, oder direkt die Schriftgröße selbst bearbeiten. Ich würde dazu neigen, vorher festgelegte Größen zu verwenden, um das Testen zu erleichtern.
Ich würde eine JavaScript-Bibliothek verwenden, um die Erkennung der Breite des Darstellungsbereichs zu erleichtern - es ist in verschiedenen Browsern bekanntlich anders. Mit jQuery könnte der Code wie folgt aussehen:
$(function(){
var viewPortWidth = $(window).width();
if (viewPortWidth > 1900) {$('body').addClass('extraWide')}
else if (viewPortWidth > 1400) {$('body').addClass('wide')}
else if (viewPortWidth > 1000) {$('body').addClass('standard')}
else if (viewPortWidth > 700) {$('body').addClass('narrow')}
else {$('body').addClass('extraNarrow')}
});
Und die CSS:
<style type="text/css">
body {font-size:62.5%;} /* Set the size of 1em to 10px in all browsers */
body.extraWide {font-size:85%;}
body.wide {font-size:75%;}
body.narrow {font-size:50%;}
body.extraNarrow {font-size:40%;}
</style>
Diese Werte jedoch optimiert werden, die Sie mögen, natürlich, und Sie können so viele Divisionen einrichten, wie Sie wollen . Dies ist eine sehr schnelle Lösung, sollte aber den Zweck erfüllen.
Ein Hinweis - der JavaScript-Code zeigt nur die Skala einmal beim Laden der Seite an - es wird nicht angepasst, wenn Sie die Größe Ihres Fensters ändern. Das ist eine mögliche Ergänzung, aber es gibt größere Überlegungen, bevor Sie sich auf den Weg machen. Persönlich würde ich sogar darüber nachdenken, den Skalenwert in einem Cookie zu setzen, um die Benutzererfahrung während der gesamten Sitzung konsistent zu halten, anstatt bei jeder Seitenladung eine neue Skalierung vorzunehmen.
Ich hoffe, die gegen diese Antwort downvotes wegen ist es jetzt besser, modernere Lösungen für dieses Problem. Das heißt nicht, dass diese Antwort _wrong_ ist, aber Medienanfragen sollten der erste Versuch sein, diesen Effekt zu erzielen. – Beejamin