第二种解决方案。
默认情况下,旋转源自图像的中心。你可以通过设置来改变它transform-orgin
。下面的 CSS 将使图像按应有的方式旋转,因此您无需翻译它们。您可能应该将我的两个答案放在一起弗兰肯斯坦,因为您几乎不需要任何代码rotateImage()
即可工作。
#img1 {
transform-origin: bottom right;
}
#img2 {
transform-origin: bottom left;
}
#img4 {
transform-origin: top right;
}
#img3 {
transform-origin: top left;
}
请注意:您混淆了#img4 和#img3 的位置,其中#img4 位于#img3 之前,因此这些图像的变换原点被调换了。
额外的好处:
我觉得在四个不同的元素上设置相同的值有点浪费,所以我建议使用 CSS 变量 on.container
来存储所有图像的旋转值。如果你这样做,在 Inspector 中测试不同的值会更容易。
CSS
.container {
--image-rotation: 0deg;
width:500px;
height:500px;
padding: 50px;
}
img {
width:100%;
height:100%;
transform: rotate(var(--image-rotation));
}
Javascript
rotateImage() {
const imgContainer = document.querySelector('.container');
let angle = document.getElementById('angle').value || 0; //angle to be rotated by
angle = angle % 360 + 'deg';
imgContainer.style.setProperty('--image-rotation', angle);
}
https://jsfiddle.net/mg46dz7h/