[TIL]@keyframeを動的に使用
プロジェクトのプロトタイプ作業中、
@keyframeを使用したアニメーションを実装する必要があります.
propsを提供するstyledComponentを使用してモジュール化します.
同じ構成部品に別のオブジェクトを追加するには、繰り返し文を使用します.
でも、
他の要素が実行されています.
@keyframeこいつだけが単独行動した.
最後に,入力対象の値で統一する現象が現れた.
そこであちこち歩き始め、土をかきながら.
きっと無理にコードしない気持ち
@keyframeプロパティは最後の値として宣言されます.
キーフレームが複数回定義されている場合:
specでは、すべてのプロパティが各キーを指定しているわけではありません.
キーフレームが複数回定義されている場合:
最近のキーで宣言された値だけが有効です.
@keyframeで!重要は無視される.
キーフレームで!重要なプロパティを使用する定義はすべて無視されます.
ソース:MDN
動的宣言@keyframe
次のSytlyedコンポーネントでは、
関数を作成し、@keyframe宣言を強制的に貼り付ける必要があります.
componentプレゼンテーション関数にナビゲート
@keyframeのname値とbody値を入力します!
こつこつ.
@keyframeを使用したアニメーションを実装する必要があります.
propsを提供するstyledComponentを使用してモジュール化します.
同じ構成部品に別のオブジェクトを追加するには、繰り返し文を使用します.
でも、
他の要素が実行されています.
@keyframeこいつだけが単独行動した.
最後に,入力対象の値で統一する現象が現れた.
そこであちこち歩き始め、土をかきながら.
きっと無理にコードしない気持ち
@keyframeプロパティは最後の値として宣言されます.
キーフレームが複数回定義されている場合:
specでは、すべてのプロパティが各キーを指定しているわけではありません.
キーフレームが複数回定義されている場合:
最近のキーで宣言された値だけが有効です.
@keyframeで!重要は無視される.
キーフレームで!重要なプロパティを使用する定義はすべて無視されます.
ソース:MDN
動的宣言@keyframe
次のSytlyedコンポーネントでは、
export const LineAni = styled.div`
...(생략)
animation-name: ${(props) => `lineMoving` + props.lineOptions.index};
animation-duration: 3s;
animation-iteration-count: infinite;
animation-timing-function: ease-in-out;
${(props) =>
props.lineOptions.animation === "forward"
? css`
animation-direction: normal;
`
: css`
animation-direction: reverse;
`}/* animation-direction:alternate; */
/* animation-fill-mode: forwards; */
`;
export default LineAni;
@keyframeを動的に宣言するには、関数を作成し、@keyframe宣言を強制的に貼り付ける必要があります.
export const addAnimation = (name, body) => {
let dynamicStyles = null;
dynamicStyles = document.createElement("style");
dynamicStyles.type = "text/css";
document.head.appendChild(dynamicStyles);
dynamicStyles.sheet.insertRule(
`@keyframes ${name} {${body}}`,
dynamicStyles.length
);
};
強制貼り付け関数を作成すると、componentプレゼンテーション関数にナビゲート
@keyframeのname値とbody値を入力します!
const lineAniHorLayerRender = () => {
if (LineOptions) {
let _LineOptions = LineOptions.filter((el) => el.rotate === "hor");
return _LineOptions.map((item, index) => {
addAnimation(
`lineMoving${item.index}`,
`to {
left: ${item.x + item.width}px;
}`
);
return (
<LineAni
lineOptions={item}
className={"lineAniHor-" + item.index}
key={"lineAniHor" + index}
/>
);
});
}
styledComponentは@keyframeを動的に使用できます.こつこつ.
Reference
この問題について([TIL]@keyframeを動的に使用), 我々は、より多くの情報をここで見つけました https://velog.io/@jazzyfact95/TIL-keyframe-동적-사용テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol