Есть страница, как сделать так, если разрешение экрана меньше или равно 1024
, то размер страницы становился такой, как будто мы нажали ctrl-
(с масштабом 80%)
$(window).on("resize", function () {
if(
$(window).width()<= 1024
){
/*IF IE9*/
if (!('querySelector' in document) //скорее всего ie 9+
|| !('localStorage' in window) //ie 8+
|| !('addEventListener' in window) //ie 8 + (возможно)
|| !('matchMedia' in window)) {//ie 10+
//действия которые должны сработать для IE.
$("body").css({"zoom":"80%", "padding-left":"20px"});
$(".left_sidebar").css("left","-4px");
}
else {
$("body").css("zoom","80%");
$("body").css("-ms-zoom","80%");
}
}
}).resize();
Следующий код масштабирует страницу до 1024px = 100% при условии, что доступная ширина меньше 1024. Если больше, то страница показывается в единичном масштабе.
https://jsfiddle.net/xgqw5bjo/1/
Обращаю внимание, что вариант с использованием jQuery для задания стилей не работает, поскольку он сам обрабатывает префиксы, а тут их нужно контролировать вручную.
~function () {
var $window = $(window), $body = $("body");
var ie = document.documentMode;
function updateSizes() {
var width = $window.width(), scale = Math.min(width / 1024, 1);
var style = $body[0].style;
style.msZoom = ie === 8 || ie === 9 ? scale : 1;
style.zoom = ie === 10 || ie === 11 ? 1 : scale;
style.mozTransform = "scale(" + scale + ")";
style.oTransform = "scale(" + scale + ")";
style.transform = "scale(" + scale + ")";
}
$window.resize(updateSizes);
updateSizes();
}();
html {
width: 100%;
overflow: hidden;
}
body {
margin: 0;
transform-origin: top left;
}
@supports (transform: scale(1)) {
body {
-ms-zoom: 1 !important;
zoom: 1 !important;
}
}
div {
width: 1024px;
height: 128px;
background: repeating-linear-gradient(to right, blue, red 256px);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div></div>
Теоретически (не проверял) должно работать так:
Edge 12+ transform & @supports
Opera 11.5 - 12.0 -o-transform
Opera 12.1 transform
Firefox 3.5 - 15 -moz-transform
Firefox 22+ transform (есть @supports
, но zoom
всё равно нет)
Safari 4 - 8 zoom
Safari 9+ transform & @supports (появились одновременно - повезло)
Chrome 4 - 27 zoom
@supports
, но ещё нет transform
)Если добавить -webkit-transform
, то появится поддержка Safari 3.1 - 3.2, но многое сломается, так что лучше не надо.
Т. о. для современных браузеров результат тем или иным способом сводится к использованию transform
и уничтожению zoom
. Во всех совсем современных и развивающися (Edge, Firefox, Safari, Chrome) в итоге уже получилось transform & @supports, что соответствует стандарту, а следовательно, скорее всего не сломается в будущем.
Проверено в (пожалуйста, дополняйте список, если проверяете в другом браузере):
Детали по поддержке браузерами:
@supports
)PS: А вообще, правильнее было сделать нормальный responsive-дизайн.
Ваш код работает когда пользователь сам изменяет масштаб, да и в коде ошибка при указании значения для zoom
, он не в процентах, попробуйте так
$(function () {
if($(window).width()<= 1024) {
/*IF IE9*/
if (!('querySelector' in document) //скорее всего ie 9+
|| !('localStorage' in window) //ie 8+
|| !('addEventListener' in window) //ie 8 + (возможно)
|| !('matchMedia' in window)) {//ie 10+
//действия которые должны сработать для IE.
$("body").css({"zoom":"80", "padding-left":"20px"});
$(".left_sidebar").css("left","-4px");
}
else {
$("body").css("zoom","80");
$("body").css("-ms-zoom","80");
}
}
});
Пример:
$(function () {
if($(window).width()<= prompt("Ширина экрана:", "1024")) {
/*IF IE9*/
if (!('querySelector' in document) //скорее всего ie 9+
|| !('localStorage' in window) //ie 8+
|| !('addEventListener' in window) //ie 8 + (возможно)
|| !('matchMedia' in window)) {//ie 10+
//действия которые должны сработать для IE.
$("body").css({"zoom":"80", "padding-left":"20px"});
$(".left_sidebar").css("left","-4px");
}
else {
$("body").css("zoom","80");
$("body").css("-ms-zoom","80");
}
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<h2>Header</h2>
<p>Some text...</p>
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Есть 3 диаграммы, заключены в полимер, сделал переключалку между ними, по отдельности все работают идеально, но мне необходимо и включать...
Имеется таблица, при нажатии на любую первую ячейку выполняется метод initExpandableTableRows(), а если нажать на любую другую ячейку, то выполняется...