ОК - для начала вы должны использовать Ems для максимально возможного количества измерений в вашем пользовательском интерфейсе.По крайней мере, размер всех ваших текстовых элементов с Ems (а не пикселей или%).Если возможно, установка ширины блоков макета в Ems также поможет пропорционально масштабировать приложение.Если вы можете установить все свои размеры в Ems, все ваше приложение будет визуально масштабируемым.
Ключ к Ems заключается в том, что они имеют размер относительно размера шрифта их родительского элемента - что означает, что вы можете настроитьпропорционально размеру всего текста, регулируя размер шрифта элемента body (поскольку все относительно тела).
Последний шаг - использование фрагмента JavaScript для определения ширины текста.viewport, и установите размер шрифта тела соответственно.В зависимости от того, насколько детализированным вы хотите управлять масштабом, вы можете либо использовать классы в элементе body для установки набора предопределенных значений, либо напрямую управлять самим размером шрифта.Я бы предпочел использовать заранее определенные размеры, если это возможно, чтобы упростить тестирование.
Я бы использовал библиотеку javascript, чтобы упростить обнаружение ширины области просмотра - она, как известно, различна в разных браузерах.С помощью jQuery код может выглядеть следующим образом:
$(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')}
});
И 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>
Эти значения могут быть изменены, как вам угодно, конечно, и вы можете установить столькоделения как хотите.Это очень быстрое и грязное решение, но оно должно сработать.
Примечание - показанный код javascript устанавливает масштаб только один раз при загрузке страницы - онне будет корректировать его при изменении размера окна.Это возможное дополнение, но есть более важные соображения, прежде чем идти по этому пути.Лично я бы даже подумал об установке значения масштаба в файле cookie, чтобы обеспечить постоянство работы пользователя на протяжении всего сеанса, а не масштабирование при каждой загрузке страницы.