【发布时间】:2017-08-09 20:07:06
【问题描述】:
我有一个可以通过它的 4 个边中的任何一个以及它的 4 个角中的任何一个来调整大小的对象。
现在我正在尝试使其可旋转,并且我正在使用 CSS 属性 translate: rotate(angle) 这样做,并且锚点是对象的中心。
对象具有顶部、左侧、宽度、高度和角度的属性。
问题是,一旦它旋转,如果我需要从右下角调整它的大小,它不会保持左上角的位置,同时仍然保持中心锚点。
我需要找到一种方法来通过更新它来保持左上角的位置,可能使用一些三角函数。
document.getElementById("button").addEventListener("click", function() {
var obj = document.getElementById("object");
console.log(obj.style.top, obj.style.left); // 100, 100
obj.style.width = "200px";
obj.style.height = "200px";
// Something needs to be done here to update the top left position and keep it in place
});
div {
position: absolute;
top: 100px;
left: 100px;
width: 50px;
height: 50px;
background: red;
transform-origin: 50% 50%;
transform: rotate(20deg);
}
<div id="object"></div>
<button id="button">Resize bottom-right corner</button>
我有一个小提琴here
【问题讨论】:
-
我会更关心点击按钮后出现的东西。
-
这只是一个演示问题的示例代码。实际代码是用 React 编写的,依赖太多了,放在这里。
标签: javascript html css trigonometry