Ich habe ein div, das ich über einem anderen Element zeige und positioniere. Wenn ich eine CSS-Transformation auf den gesamten Körper anwende, wird die Position nicht mehr korrekt berechnet. Hier ist die javascript:CSS-Skalierung, die die Positionsberechnungen beeinflusst
function Start() {
$('#ScaleBodyBtn').click(function() {
$('body').css({
'transform': 'scale(1.5)',
'transform-origin': 'top left'
});
});
$('#ShowOverlayBtn').click(function() {
var ThePosition = $('#ShowOverlayBtn').offset();
$('#Overlay').css({
'top': ThePosition.top,
'left': ThePosition.left
}).show();
});
}
$(Start);
Hier ist der HTML/CSS
<input id="ScaleBodyBtn" type="button" value="scale body" />
<input id="ShowOverlayBtn" type="button" value="show overlay" />
<div id="Overlay"></div>
#ShowOverlayBtn,
#ScaleBodyBtn {
clear: both;
display: block;
margin: 50px 30px;
}
#Overlay {
display: none;
background: red;
height: 50px;
width: 50px;
position: absolute;
}
Und hier ist the jsFiddle, die das Problem repliziert. Sie klicken auf Overlay anzeigen und es erscheint direkt über der Schaltfläche. Aktualisieren Sie und drücken Sie Scale Body zuerst und dieses Mal, wenn Sie auf die Schaltfläche Show Overlay klicken, ist das rote Div nicht an der richtigen Stelle.
Was muss ich ändern, um das Problem zu beheben?