【问题标题】:Transform: translate Doesn't work in React / SASS [duplicate]转换:翻译在 React / SASS 中不起作用 [重复]
【发布时间】:2021-05-31 23:03:42
【问题描述】:

我找不到这个简单问题的解决方案,我将显示更改为 flex 和 block,但也没有用。它适用于父元素。但我想在这段代码中我看不到一些东西。

.planets {
  display: flex;

  height: 100vh;
}
.pluton-orbit {
  display: inline-block;
  width: 70rem;
  height: 70rem;
  border: 1px solid rgba(0, 0, 0, 0.219);
  border-radius: 50%;
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50% , -50%);
  z-index: 4;
  animation: Rotation 5s linear infinite;
}
@keyframes Rotation {
  from {
    transform: rotate(0);
  }
  to {
    transform: rotate(360deg);
  }
}

这里的转换不起作用。我知道如何居中,我的问题是为什么转换属性不起作用。顺便说一下,这是对 Sass 的反应。其他一切都在代码中工作,只是转换有这个奇怪的问题。这是组件。

import React from "react";

const Planets: React.FC = () => {
  return (
    <div className="planets">
      <div className="pluton-orbit">
        <div className="pluton"></div>
      </div>
      <div className="neptun-orbit">
        <div className="neptun"></div>
      </div>
    </div>
  );
};

export default Planets;

【问题讨论】:

  • 它确实有效,你对 -50% 的值感到满意吗?你有旋转关键帧的完整代码吗?
  • 我有,但为什么重要?这只是简单的 360 度旋转动画,代码中的所有内容都无法转换。它没有居中
  • 好的,所以..我停止了动画并且它工作了..但我需要动画..
  • 如果您添加其余代码,我们可以尝试帮助...
  • 发布了一个答案,证实了你的怀疑 Andre :) 我希望有一个更优雅的解决方案来解决这个问题

标签: html css reactjs sass


【解决方案1】:

这是因为动画覆盖了transform 属性。这是transform 的限制之一。一种解决方案是将translate(-50%, -50%) 添加到动画关键帧中。

@keyframes Rotation {
  from {
    transform: translate(-50%, -50%) rotate(0);
  }
  to {
    transform: translate(-50%, -50%) rotate(360deg);
  }
}

【讨论】:

  • 谢谢。那么如果有动画,代码中的其他变换、旋转或缩放功能就不起作用了??
  • 如果有动画则不一定。 transform 属性只接受一个无法添加的值,因此您需要在一个中指定所有转换。你不能做transform: translate() 然后再做一个transform: scale() 什么的
猜你喜欢
  • 2018-09-20
  • 2020-06-18
  • 2020-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-11
  • 2018-08-09
  • 1970-01-01
相关资源
最近更新 更多