У меня такой макет:
HTML
<div id="container">
<div id="zoomBox">
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
</div>
</div>
CSS
#container { width:100%; }
#box { height:1000px;width:920px; }
То, что я пытаюсь сделать, - это масштабировать мой контейнер и содержимое, чтобы сохранить соотношение сторон, в котором он сейчас находится. Сейчас я использую transform: scale()
и он отлично работает, но у меня возникают серьезные проблемы с его работой в Internet Explorer.
Это мой код до сих пор. Есть ли у кого-нибудь какие-либо другие предложения по улучшению этой работы в IE?
function zoomProject(percent)
{
$maxWidth = $("#container").width();
if(percent == 0)
percent = $maxWidth/920;
$("#zoomBox").css({
'transform': 'scale(' + percent + ')',
'-moz-transform': 'scale(' + percent + ')',
'-webkit-transform': 'scale(' + percent + ')',
'-ms-transform': 'scale(' + percent + ')'
});
}
Попробуйте без преобразования:
new_width = width * percent / 100;
new_height = height * percent / 100;
$("#zoomBox").css('width',new_width);
$("#zoomBox").css('height',new_height);
У меня нет jquery, но пример с использованием raw html и javascript. Вероятно, он будет работать на IE как есть (более старый, т.е. Не использует какой-то один синтаксис, но имеет ту же функциональность), но как только вы переключите его на jquery, все должно быть хорошо.
Код:
function zoomProject(ratio) {
var i, height;
var boxes = document.getElementsByClassName("box");
for (i=0;i<boxes.length;i++) {
height = (boxes[i].offsetWidth * ratio) + "px";
boxes[i].style.height = height;
}
}
zoomProject(.1);
.container { background: red; width: 100%; height: 100%; }
.box { background: blue; width: 100%; border: 1px solid white;}