На HTML-странице я пытаюсь реализовать функцию масштабирования с помощью свойства масштаба CSS-преобразования. Внутри HTML-страницы у меня больше элементов div, и все они размещаются в технике абсолютного положения. Затем я применил свойство scale к каждому элементу div, и я смог увидеть подобное увеличение, но все точки расположения элементов div рухнули друг на друга. Так как избежать коллапса и сохранить разрыв между собой после примененного масштабирования.
Подскажите, пожалуйста, как остановить перекрытие и как рассчитать левую и верхнюю позиции каждого элемента в соответствии со свойством масштаба.
var zoomScale = 1;
$(document).ready(function(){
$("#zoomin").click(function(){
if(zoomScale >=4 ) return;
zoomScale = zoomScale +1;
dispStatus();
applyZoomIn();
});
function applyZoomIn(){
$(".zoomable").each(function(index){
var left = $(this).position().left;
var top = $(this).position().top;
var newLeft = left*zoomScale +"px";
var newTop = top*zoomScale +"px";
$(this).css('transform',' scale('+zoomScale+','+zoomScale+')')
});
}
function dispStatus(){
$("#displayStatus").text("Current Zoom Scale : "+zoomScale);
}
dispStatus();
});
#container{
width:500px;
height:500px;
border:1px solid red;
position:relative;
overflow:auto;
}
.zoomable{
background-color:lightblue;
border:1px solid red;
width:100px;
height:100px;
position:absolute;
transform-origin: top left;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<button id="zoomin"> Zoom In</button>
<div id="displayStatus"></div>
<br/><br/>
<div id="container">
<div class="zoomable">First Div</div>
<div class="zoomable" style="left:105px">Second Div</div>
</div>
JSFiddle Link