OldPageZoom 1.0
старый сайт на весь экран
Скачать zip  ·  Разделы сайта

Документация OldPageZoom 1.0

Библиотека растягивает старый сайт, свёрстанный под фиксированный маленький экран (640x480, 800x600), на всё окно браузера с сохранением пропорций. Так ведёт себя игра в полноэкранном режиме. Посетителю не нужно ничего увеличивать вручную, и работает это даже в браузерах, где масштабирования нет вообще.

Содержание: Как это работает | Требования к странице | Параметры | Методы | Примеры | Ctrl+ и Ctrl- | Ограничения режима dom

Быстрый старт - на странице «Как подключить», таблица браузеров - «Браузеры», проблемы и решения - «Вопросы». Эта же документация есть в архиве: файл docs/index.html.

Как это работает

У библиотеки два способа масштабирования. Нужный выбирается автоматически (параметр mode).

zoom: Internet Explorer 5.5-11. Используется встроенное в IE свойство zoom: весь блок увеличивается целиком, как картинка. Это быстро и точно.

dom: все остальные браузеры (Netscape 6/7, Mozilla, Firefox, Opera, Safari, Chrome). Страница пересчитывается вручную:

Размеры считаются от краёв, а не по отдельности, поэтому между кусками нарезки (ImageReady, Fireworks) не появляется щелей в 1px.

Требования к странице

  1. Один общий контейнер. Всё, что нужно масштабировать, лежит внутри одного элемента с id (по умолчанию wrapper).
  2. Нулевые отступы body. Отступы body находятся снаружи контейнера и не масштабируются.
  3. Запуск после загрузки. start() сам ждёт window.onload, чтобы картинки без размеров успели загрузиться. Если у всех картинок есть width и height, можно вызвать init() сразу в конце страницы: так масштаб применится раньше.
  4. Размеры в пикселях. Масштабируются числа в атрибутах и в style="...". Проценты не трогаются: они и так растягиваются вместе с родителем.
  5. Если у страницы есть onload или onresize, они сохраняются: библиотека вызывает их перед своим кодом.

Параметры

Передаются объектом в start() или init(). Все необязательны.

ПараметрПо умолчаниюЧто делает
root"wrapper"id контейнера страницы (или сам элемент).
mode"auto""auto": zoom в IE, dom в остальных. "zoom": всегда встроенный zoom (IE, современные Chrome и Firefox 126+). "dom": всегда ручной пересчёт, в том числе в IE.
fit"both""both": сайт целиком влезает в окно по ширине и высоте (как игра на весь экран). "width": по ширине окна, высота может уйти в прокрутку. "height": по высоте.
scale0Фиксированный масштаб вместо подгонки, например 1.5. 0: подгонять под окно.
baseWidth, baseHeight0Размер, от которого считается масштаб. 0: измерить сайт. Можно указать расчётный экран: 640 и 480.
minScale1Нижний предел. 1: никогда не уменьшать. 0: разрешить уменьшение в маленьких окнах.
maxScale0Верхний предел. 0: без предела.
step0Округлять масштаб вниз до кратного числа. 1: только 1x, 2x, 3x (пиксельная графика остаётся ровной). 0.25: 1, 1.25, 1.5 и так далее.
autoResizetrueПодстраиваться при изменении окна. false: подогнать один раз при загрузке.
resizeDelay100Пауза в мс после изменения окна, чтобы не пересчитывать на каждый пиксель.
align"left"Положение по горизонтали, когда сайт уже окна: "left", "center", "right".
valign"top""middle": центрировать по вертикали.
scaleFontstrueМасштабировать текст (режим dom).
scaleImagestrueМасштабировать картинки без атрибутов размера (режим dom).
scaleBackgroundstrueМасштабировать фон ячеек (режим dom).
scaleSpacingtrueМасштабировать cellpadding, cellspacing, hspace, vspace, border (режим dom).
lineHeightfalseМасштабировать межстрочный интервал в px. Включайте, если в стилях сайта задан line-height в пикселях.
onScalenullФункция, которая вызывается после каждого изменения масштаба: function (scale) {}.

Методы

МетодЧто делает
OldPageZoom.start(options)Запустить после загрузки страницы. Обычный способ.
OldPageZoom.init(options)Запустить сразу. Возвращает true или false, если браузер не поддерживается или контейнер не найден. Повторный вызов ничего не делает.
OldPageZoom.setScale(n)Поставить масштаб вручную (1 = исходный размер). После этого окно не отслеживается до вызова fit().
OldPageZoom.zoomIn(k)Увеличить в k раз (по умолчанию 1.1).
OldPageZoom.zoomOut(k)Уменьшить в k раз (по умолчанию 1.1).
OldPageZoom.fit()Вернуться к подгонке под окно.
OldPageZoom.getScale()Текущий масштаб.
OldPageZoom.supported()Умеет ли браузер работать с библиотекой.

Примеры

Подогнать один раз и больше не трогать

OldPageZoom.start({ root: "wrapper", autoResize: false });

Сайт подгоняется под окно при загрузке, дальше размер не меняется. Ctrl+ и Ctrl- работают как обычно.

По центру экрана, как игра

OldPageZoom.start({ root: "wrapper", align: "center", valign: "middle" });

Только целые увеличения (ровные пиксели)

OldPageZoom.start({ root: "wrapper", step: 1 });

Сайт 640x480 в окне 1280x960 и больше станет ровно вдвое крупнее. В окне меньше этого размера останется 1x.

Считать от экрана 640x480, а не от размера сайта

OldPageZoom.start({ root: "wrapper", baseWidth: 640, baseHeight: 480 });

Свои кнопки масштаба

<a href="javascript:OldPageZoom.zoomOut()">меньше</a>
<a href="javascript:OldPageZoom.zoomIn()">больше</a>
<a href="javascript:OldPageZoom.fit()">по окну</a>

Показать текущий масштаб

OldPageZoom.start({
    root: "wrapper",
    onScale: function (s) {
        document.getElementById("zoom").innerHTML = Math.round(s * 100) + "%";
    }
});

Ctrl+ и Ctrl-

При autoResize: true (по умолчанию) в браузерах, где Ctrl+ увеличивает страницу целиком (IE7+, Firefox 3+, Chrome, Safari, новые Opera), окно в пикселях страницы становится меньше. Библиотека видит это как изменение размера окна и снова подгоняет сайт под окно. В итоге сайт остаётся во весь экран, и Ctrl+ почти ничего не меняет.

В Firefox 1.x-2, Netscape 6/7 и Mozilla Ctrl+ увеличивает только текст. Текст растёт внутри ячеек так же, как и без библиотеки, и может вылезти за них. В IE5-6 пункт «Размер шрифта» действует на текст так же, как без библиотеки.

При autoResize: false сайт подгоняется один раз при загрузке, а дальше Ctrl+ и Ctrl- работают поверх как обычный зум браузера.

Для своих кнопок или клавиш используйте zoomIn(), zoomOut() и fit(): они работают во всех поддерживаемых браузерах, даже где зума нет.

Ограничения режима dom

В IE (режим zoom) этих ограничений нет: там увеличивается всё.

Рейтинг Old-Web
OldPageZoom 1.0
Автор: Эрик Акопян (eriko)
сайт на narod.website