javascript - 如何防止旋转的 div 在改变其宽度时移动?

标签 javascript html css transform css-transforms

我所面临的问题重现如下:

.rect {
  transform: rotateZ(45deg);
  background-color: #ddd;
  position: absolute;

  width: 300px;
  height: 200px;

  animation: 3s linear 0s infinite normal none running widen;
}

@keyframes widen {
  from { width: 300px; }
  to { width: 500px; }
}
<div class="rect"></div>

请注意,随着矩形变宽,其位置也会发生变化。确实,该元素的编程位置没有改变,但在屏幕上看起来它确实发生了变化。

我只是想加宽它,而不让它在视觉上看起来移动。也就是说,矩形的右侧应该简单地挤出额外的 200 个像素。这可能吗?

环顾四周,似乎将 transform-origincenter 设置为 top left 就可以实现这种效果,但不幸的是我的矩形的原点旋转围绕其中心。也许解决方案是在效果发生时以某种方式临时设置它..

最佳答案

实现此目的的一个简单方法是将灰色矩形 div 包裹在另一个进行旋转的 div 中。这样宽度和旋转就可以独立控制。

如果还需要应用其他转换,此方法使您可以控制应用转换的顺序

.rect {
  transform: rotateZ(45deg);
}

.widen {
  background-color: #ddd;
  width: 300px;
  height: 200px;
  animation: 3s linear 0s infinite normal none running widen;
}

@keyframes widen {
  from {
    width: 300px;
  }
  to {
    width: 500px;
  }
}
<div class="rect">
  <div class="widen" />
</div>

关于javascript - 如何防止旋转的 div 在改变其宽度时移动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71865454/

相关文章:

javascript - knockout.js/如何响应绑定(bind)下拉列表的变化事件

javascript - Bootstrap 选项卡 - 在不同的内侧打开粒子选项卡并通过单击跳转到 anchor

Outlook 中的 HTML 电子邮件

css - CSS 类名中的前导数字 = 不工作

html - 独立表th row

javascript - 从 child 更改 parent 的状态时,为什么 parent 不再渲染?

javascript - 将字符串格式日期从 html 发送到 javascript 函数。 Javascript 只收到不同的年份

html - 如何在html中获取用户设备的高度

javascript - 如何从网页中的嵌入式pdf中获取选定的文本?

html - 放大时如何阻止边框分开?