【发布时间】:2019-06-05 18:55:45
【问题描述】:
我通过两个<circle /> 在页面上绘制了一个加载器(微调器)。需要以不同的方向旋转两条路径,并以原点为中心,因此,圆圈围绕 SVG 的中心旋转并且不会平移。
尝试为它制作动画transform: rotate(360deg)。路径变得混乱并起源于其他地方。尝试管理 viewBox 以获得预期结果,但没有成功。
import React, { PureComponent } from 'react';
import styled from 'styled-components';
import { prop } from 'styled-tools';
class Loader extends PureComponent {
render() {
return (
<Spinner
xmlns="http://www.w3.org/2000/svg"
width="200"
height="200"
preserveAspectRatio="xMidYMid"
viewBox="0 0 100 100"
>
<circle
className='outer'
cx="50"
cy="50"
r="40"
fill="none"
stroke="#374a67"
stroke-dasharray="63 63"
stroke-linecap="round"
stroke-width="4"
/>
<circle
className='inner'
cx="50"
cy="50"
r="35"
fill="none"
stroke="#d50000"
stroke-dasharray="55 55"
stroke-dashoffset="55"
stroke-linecap="round"
stroke-width="4"
/>
</Spinner>
)
}
}
const Spinner = styled.svg`
& .outer {
animation: rotate 2s linear infinite;
}
& .inner {
animation: reverseRotate 2s linear infinite;
}
@keyframes rotate {
100% {
transform: rotate(360deg);
}
}
@keyframes reverseRotate {
100% {
transform: rotate(-360deg);
}
}
`;
export default Loader;
不知道如何用我的一段代码制作一个实际工作的 sn-p,sry
这是我当前动画的一个示例:
【问题讨论】:
标签: reactjs svg styled-components