在 CSS 变换中,如何在缩小时防止放大的元素移动

In a CSS transform, how to prevent shifting of scaled up element when scaling down

我想使用 css 在鼠标悬停时放大元素并在鼠标离开元素时再次缩小元素。在所有缩放过程中,左上边缘应保持不变。

下面的代码几乎完成了我想要的,除了当我离开鼠标时,元素在按比例缩小之前向左移动。我希望在放大后从结束位置开始缩小。

我怎样才能做到这一点?

#test {
  height: 100px;
  width: 100px;
  background-color: lightgray;
  margin-left: 100px;
  margin-top: 100px;
  transition: transform 2s;
}  
#test:hover {
  transform: scale(2);
  transform-origin: left top;
}
<div id="test">Text</div>

发生这种情况的原因是您在悬停元素时第一次声明了 transform-origin

解决方法: 将 transform-origin: left top;#test:hover 移动到 #test