Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Масштабирование страницы в браузерах (https://javascript.ru/forum/events/8158-masshtabirovanie-stranicy-v-brauzerakh.html)

gizmomy 11.03.2010 10:16

Масштабирование страницы в браузерах
 
Вопрос состоит в следующем: возможно ли изменить рамер div'a или изменить картинку при изменении пользователем масштаба страницы.

Нужно, потому как при масштабе страницы в 200% картинки соответственно расплываются и хотелось бы заменить её на картинку соответствующего раздела.

Gvozd 11.03.2010 11:23

поснимай показания размеров с рисунков, и с тела документа(видимой области)
и поэксперементируй в разных браузерах, какие велечины, и как именно будут менятся
http://javascript.ru/blog/Andrej-Par...enta-elementov

subzey 11.03.2010 12:08

gizmomy,
А Вы уверены, что хотите этого? Вдруг, у пользователя слабоватое зрение, и он специально захотел рассмотреть картинку поближе, увеличив масштаб браузера?

gizmomy 11.03.2010 13:36

Gvozd,
А яваскрипт не улавливает моменты, когда пользователь меняет масштаб страницы…

subzey,
ну так я и хочу пользователю показать эту же картинку, но в большем размере.

subzey 11.03.2010 16:41

Ну, на самом деле, есть способ узнать масштаб, но он грязный и требует четырех reflow, что не есть труъ.

function getScale(){ 
    var ct = document.createElement("div"); // создаем див
    ct.style.position = "fixed"; // задаем отображение от вьюпорта
    ct.style.margin = "0px"; // на всякий случай
    ct.style.width = "100%"; // ширина дива — ширина вьюпорта
    var sb = document.documentElement.style.overflow; // сохраняем старое значение overflow
    document.body.appendChild(ct); // вставляем в документ
    document.documentElement.style.overflow = "hidden"; // это значение действует на самом деле не на <html>, а на ICB, равный по ширине вьюпорту
    var zoomRatio = window.innerWidth / ct.clientWidth; // делим ширину окна на ширину вьюпорта 
    document.documentElement.style.overflow = sb; // возвращаем стиль на место
    document.body.removeChild(ct); // удаляем див
    return zoomRatio;
} 
alert("Масштаб:" + Math.round(getScale() * 100) + "%");


Проверял только на Опере 10.50, но, возможно, с минимальным изменением, будет работать и в других браузерах.

Про viewport, initial containing block («ICB») и прочее можно почитать тут.

И, последнее, прошу, не используйте это знание во зло — иногда пользователю самому виднее, как использовать фичи его браузера.

gizmomy 12.03.2010 06:33

subzey,
Спасибо.

В Хроме и Мозилле масштаб определяет. В ИЕ7 — NaN. Однако, если увеличивать масштаб страницы, то скрипт все равно выдает 100%, даже если страницу перегрузить в увеличенном масштабе.

Короче простого способа видимо нет, а городить огород действительно не нужно.

Еще раз спасибо.

Dim-Lo 12.03.2010 12:57

Скажыте неуду в скриптах.... как сделать маштабирования екрана 800*600 для всех екранов.....
Если напишете мне скрипт буду кланятса долго.... Пробывал - не выйшло.

ZoNT 12.03.2010 13:19

Цитата:

Сообщение от Dim-Lo
Пробывал

Где это ты пробывал??? В школе ты явно не бывал:
http://ru.wiktionary.org/wiki/%D0%BF...%D1%82%D 1%8C
http://dal.sci-lib.com/word033542.html

ZoNT 12.03.2010 13:22

Как же меня бесят неграмотные люди, которые одно слово от другого оличить не могут.
Эта фраза звучит как "Я с утра ехал кашу" вместо "Я с утра ел кашу"...
Запомните, слова пробОвал и пробЫвал означают совершенно разные действия!

Dim-Lo 12.03.2010 14:32

Цитата:

Сообщение от ZoNT (Сообщение 47502)
Как же меня бесят неграмотные люди, которые одно слово от другого оличить не могут.
Эта фраза звучит как "Я с утра ехал кашу" вместо "Я с утра ел кашу"...
Запомните, слова пробОвал и пробЫвал означают совершенно разные действия!


лучше чем випендрюватися, ты помог бы со скриптами ... :help:


Часовой пояс GMT +3, время: 15:17.