变换旋转不按预期旋转多次
transform rotate not rotating multiple times as expected
我在使 SVG 组旋转多次时遇到问题。如果我指定 2520 度,我希望它旋转七次,就像这里对 HTML 和 SVG 元素所做的那样。
<!DOCTYPE html>
<html>
<head>
<style type="text/css">
.spin {
width: 100px;
height: 100px;
background: red;
}
.spin:hover {
transform: rotate(2520deg);
transition: transform 3s ease-out;
}
rect {
width: 100px;
height: 100px;
background: red;
}
g:hover {
transform: rotate(2520deg);
transform-origin: 50px 50px;
transition: transform 3s ease-out;
}
</style>
</head>
<body>
<div class="spin">
</div>
<svg>
<g>
<rect height="100" width="100" fill="blue" />
</g>
</svg>
</body>
</html>
我在一个 React 项目中,在 CodePen 或诸如此类的东西中 post 有点复杂。在我的项目中,无论我在变换 属性.我认为这在某些情况下称为短轮换?就像它使用 360 度的模数,所以它旋转到 x / 360
的其余部分。因此,如果我说旋转(2520 度),它似乎根本不会旋转,因为 2520 % 360
为零。
为什么我的项目中的这种行为与这些示例中的行为不同?我什至不知道从哪里开始,但拆除这个东西以隔离行为会很乏味,除非那里有明显的东西。我在哪里可以看?提前致谢。
试试这样的东西:
g:hover {
animation: 1s 3 spin;
}
@keyframes spin {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
这实际上是因为我覆盖了另一个看起来像这样的转换规则:
transform: scale(1);
我认为它会产生那样的结果是没有意义的,但这就是它在多个浏览器中所做的。
我通过将覆盖规则设置为:
解决了这个问题
transform: none;
我在使 SVG 组旋转多次时遇到问题。如果我指定 2520 度,我希望它旋转七次,就像这里对 HTML 和 SVG 元素所做的那样。
<!DOCTYPE html>
<html>
<head>
<style type="text/css">
.spin {
width: 100px;
height: 100px;
background: red;
}
.spin:hover {
transform: rotate(2520deg);
transition: transform 3s ease-out;
}
rect {
width: 100px;
height: 100px;
background: red;
}
g:hover {
transform: rotate(2520deg);
transform-origin: 50px 50px;
transition: transform 3s ease-out;
}
</style>
</head>
<body>
<div class="spin">
</div>
<svg>
<g>
<rect height="100" width="100" fill="blue" />
</g>
</svg>
</body>
</html>
我在一个 React 项目中,在 CodePen 或诸如此类的东西中 post 有点复杂。在我的项目中,无论我在变换 属性.我认为这在某些情况下称为短轮换?就像它使用 360 度的模数,所以它旋转到 x / 360
的其余部分。因此,如果我说旋转(2520 度),它似乎根本不会旋转,因为 2520 % 360
为零。
为什么我的项目中的这种行为与这些示例中的行为不同?我什至不知道从哪里开始,但拆除这个东西以隔离行为会很乏味,除非那里有明显的东西。我在哪里可以看?提前致谢。
试试这样的东西:
g:hover {
animation: 1s 3 spin;
}
@keyframes spin {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
这实际上是因为我覆盖了另一个看起来像这样的转换规则:
transform: scale(1);
我认为它会产生那样的结果是没有意义的,但这就是它在多个浏览器中所做的。
我通过将覆盖规则设置为:
解决了这个问题transform: none;