CSS의 cubic-bezier에서 사용할 수 있는 각 이징을 TypeScript·JavaScript용으로 정수화했다
18411 단어 애니메이션TypeScript자바스크립트CSSanimation
cubic-bezier()
로 사용하는 파라미터의 일람이 편리합니다.▼ 기사에서 발췌
cubic-bezier(.47, 0, .745, .715); /* easeInSine */
cubic-bezier(.25, .46, .45, .94); /* easeOutQuad */
이 파라미터를 TypeScript나 JavaScript에서도 이용하고 싶고,
enum
를 작성했습니다.▼ 완성형
console.log(Easing._1_SineIn); // ".47, 0, .745, .715"
console.log(Easing._4_QuartOut); // ".23, 1, .32, 1"
TypeScript 버전
TypeScript 버전의 코드는 다음과 같습니다. Atsushi Kaga (@ a_24) 의 Ease24 도 참고로 하고 있습니다.
export const enum Easing {
_Linear = "0.0, 0.0, 1.0, 1.0",
// sine
_1_SineIn = ".47, 0, .745, .715",
_1_SineOut = ".39, .575, .565, 1",
_1_SineInOut = ".445, .05, .55, .95",
// quad
_2_QuadIn = ".55, .085, .68, .53",
_2_QuadOut = ".25, .46, .45, .94",
_2_QuadInOut = ".455, .03, .515, .955",
// cubic
_3_CubicIn = ".55, .055, .675, .19",
_3_CubicOut = ".215, .61, .355, 1",
_3_CubicInOut = ".645, .045, .355, 1",
// quart
_4_QuartIn = ".895, .03, .685, .22",
_4_QuartOut = ".165, .84, .44, 1",
_4_QuartInOut = ".77, 0, .175, 1",
// quint
_5_QuintIn = ".755, .05, .855, .06",
_5_QuartOut = ".23, 1, .32, 1",
_5_QuartInOut = ".86, 0, .07, 1",
// expo
_6_ExpoIn = ".95, .05, .795, .035",
_6_ExpoOut = ".19, 1, .22, 1",
_6_ExpoInOut = "1, 0, 0, 1",
// circ
_7_CircIn = ".6, .04, .98, .335",
_7_CircOut = ".075, .82, .165, 1",
_7_CircInOut = ".785, .135, .15, .86",
// inback
_BackIn = ".6, -0.28, .735, .045",
_BackOut = ".175, .885, .32, 1.275",
_BackInOut = ".68, -0.55, .265, 1.55"
}
export const enum Easing {
_Linear = "0.0, 0.0, 1.0, 1.0",
// sine
_1_SineIn = ".47, 0, .745, .715",
_1_SineOut = ".39, .575, .565, 1",
_1_SineInOut = ".445, .05, .55, .95",
// quad
_2_QuadIn = ".55, .085, .68, .53",
_2_QuadOut = ".25, .46, .45, .94",
_2_QuadInOut = ".455, .03, .515, .955",
// cubic
_3_CubicIn = ".55, .055, .675, .19",
_3_CubicOut = ".215, .61, .355, 1",
_3_CubicInOut = ".645, .045, .355, 1",
// quart
_4_QuartIn = ".895, .03, .685, .22",
_4_QuartOut = ".165, .84, .44, 1",
_4_QuartInOut = ".77, 0, .175, 1",
// quint
_5_QuintIn = ".755, .05, .855, .06",
_5_QuartOut = ".23, 1, .32, 1",
_5_QuartInOut = ".86, 0, .07, 1",
// expo
_6_ExpoIn = ".95, .05, .795, .035",
_6_ExpoOut = ".19, 1, .22, 1",
_6_ExpoInOut = "1, 0, 0, 1",
// circ
_7_CircIn = ".6, .04, .98, .335",
_7_CircOut = ".075, .82, .165, 1",
_7_CircInOut = ".785, .135, .15, .86",
// inback
_BackIn = ".6, -0.28, .735, .045",
_BackOut = ".175, .885, .32, 1.275",
_BackInOut = ".68, -0.55, .265, 1.55"
}
사용법
기본적인 사용법은 다음과 같습니다.
import { Easing } from "./Easing";
const fooElement = document.querySelector(".foo") as HTMLElement;
fooElement.style.transitionTimingFunction = `cubic-bezier(${Easing._6_ExpoOut})`;
필자는 Web Animation API 사용시, Angular의 애니메이션 구현시 등에 사용합니다.
Ease
다음에 _
를 입력하면 매개 변수 목록이 코드 완성됩니다. 1에서 6까지 번호가 증가할수록 여유가 강해지므로 여유의 강도 조정에 편리합니다.▼ 파라미터 일람을 참조하고 있는 모습
JavaScript 버전
JavaScript 버전은 다음과 같습니다. export
부분은 생략하고 있습니다.
var Easing;
(function (Easing) {
Easing["_Linear"] = "0.0, 0.0, 1.0, 1.0";
// sine
Easing["_1_SineIn"] = ".47, 0, .745, .715";
Easing["_1_SineOut"] = ".39, .575, .565, 1";
Easing["_1_SineInOut"] = ".445, .05, .55, .95";
// quad
Easing["_2_QuadIn"] = ".55, .085, .68, .53";
Easing["_2_QuadOut"] = ".25, .46, .45, .94";
Easing["_2_QuadInOut"] = ".455, .03, .515, .955";
// cubic
Easing["_3_CubicIn"] = ".55, .055, .675, .19";
Easing["_3_CubicOut"] = ".215, .61, .355, 1";
Easing["_3_CubicInOut"] = ".645, .045, .355, 1";
// quart
Easing["_4_QuartIn"] = ".895, .03, .685, .22";
Easing["_4_QuartOut"] = ".165, .84, .44, 1";
Easing["_4_QuartInOut"] = ".77, 0, .175, 1";
// quint
Easing["_5_QuintIn"] = ".755, .05, .855, .06";
Easing["_5_QuartOut"] = ".23, 1, .32, 1";
Easing["_5_QuartInOut"] = ".86, 0, .07, 1";
// expo
Easing["_6_ExpoIn"] = ".95, .05, .795, .035";
Easing["_6_ExpoOut"] = ".19, 1, .22, 1";
Easing["_6_ExpoInOut"] = "1, 0, 0, 1";
// circ
Easing["_7_CircIn"] = ".6, .04, .98, .335";
Easing["_7_CircOut"] = ".075, .82, .165, 1";
Easing["_7_CircInOut"] = ".785, .135, .15, .86";
// inback
Easing["_BackIn"] = ".6, -0.28, .735, .045";
Easing["_BackOut"] = ".175, .885, .32, 1.275";
Easing["_BackInOut"] = ".68, -0.55, .265, 1.55";
})(Easing || (Easing = {}));
var Easing;
(function (Easing) {
Easing["_Linear"] = "0.0, 0.0, 1.0, 1.0";
// sine
Easing["_1_SineIn"] = ".47, 0, .745, .715";
Easing["_1_SineOut"] = ".39, .575, .565, 1";
Easing["_1_SineInOut"] = ".445, .05, .55, .95";
// quad
Easing["_2_QuadIn"] = ".55, .085, .68, .53";
Easing["_2_QuadOut"] = ".25, .46, .45, .94";
Easing["_2_QuadInOut"] = ".455, .03, .515, .955";
// cubic
Easing["_3_CubicIn"] = ".55, .055, .675, .19";
Easing["_3_CubicOut"] = ".215, .61, .355, 1";
Easing["_3_CubicInOut"] = ".645, .045, .355, 1";
// quart
Easing["_4_QuartIn"] = ".895, .03, .685, .22";
Easing["_4_QuartOut"] = ".165, .84, .44, 1";
Easing["_4_QuartInOut"] = ".77, 0, .175, 1";
// quint
Easing["_5_QuintIn"] = ".755, .05, .855, .06";
Easing["_5_QuartOut"] = ".23, 1, .32, 1";
Easing["_5_QuartInOut"] = ".86, 0, .07, 1";
// expo
Easing["_6_ExpoIn"] = ".95, .05, .795, .035";
Easing["_6_ExpoOut"] = ".19, 1, .22, 1";
Easing["_6_ExpoInOut"] = "1, 0, 0, 1";
// circ
Easing["_7_CircIn"] = ".6, .04, .98, .335";
Easing["_7_CircOut"] = ".075, .82, .165, 1";
Easing["_7_CircInOut"] = ".785, .135, .15, .86";
// inback
Easing["_BackIn"] = ".6, -0.28, .735, .045";
Easing["_BackOut"] = ".175, .885, .32, 1.275";
Easing["_BackInOut"] = ".68, -0.55, .265, 1.55";
})(Easing || (Easing = {}));
사용법은 TypeScript 버전과 마찬가지로 다음과 같이 합니다.
console.log(Easing._1_SineIn); // ".47, 0, .745, .715"
마지막으로
cubic-bezier
의 파라미터는 자주 사용하기 때문에, 책 enum
덕분에 코딩이 편해졌습니다.
Reference
이 문제에 관하여(CSS의 cubic-bezier에서 사용할 수 있는 각 이징을 TypeScript·JavaScript용으로 정수화했다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/tonkotsuboy_com/items/05811fd82dc5113900ab
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(CSS의 cubic-bezier에서 사용할 수 있는 각 이징을 TypeScript·JavaScript용으로 정수화했다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tonkotsuboy_com/items/05811fd82dc5113900ab텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)