
Research
Security News
Malicious PyPI Package Exploits Deezer API for Coordinated Music Piracy
Socket researchers uncovered a malicious PyPI package exploiting Deezer’s API to enable coordinated music piracy through API abuse and C2 server control.
xiaohe-transition
Advanced tools
小何同学 / github@xiaohe0601 / gitee@xiaohe0601
🍜 支持非线性动画
🍟 支持中途打断动画
🌭 支持往复播放动画
🧀 支持TypeScript
🍳 支持免费商用
🥗 更多特性等你发掘...
yarn add xiaohe-transition
npm install xiaohe-transition
<script src="https://cdn.jsdelivr.net/npm/xiaohe-transition/lib/cjs/index.min.js"></script>
import XhTransition from "xiaohe-transition";
const transition = new XhTransition((value) => {
console.log("当前值发生变化", value);
});
transition.start({
start: 0,
target: 1000
});
const transition = new xh_transition.XhTransition((value) => {
console.log("当前值发生变化", value);
});
transition.start({
start: 0,
target: 1000
});
请查看 XhTransitionRepeater 文档
import XhTransition, { XhTransitionPresetBezier } from "xiaohe-transition";
// 完整配置请参考下方 `类型定义` 中的说明
const transition = new XhTransition({
// 持续时间
duration: 10 * 1000,
// 预设曲线
preset: XhTransitionPresetBezier.easeOut,
// 延迟开始时间
delay: 500,
// 帧率
fps: 60,
started(instance) {
console.log("动画开始~");
},
paused(instance) {
console.log("动画暂停~");
},
resumed(instance) {
console.log("动画继续~");
},
stopped(instance) {
console.log("动画停止~");
},
// @since 0.0.10
completed(instance) {
console.log("动画完成~");
}
}, (value, instance) => {
console.log("当前值发生变化", value);
});
// 启动动画
transition.start({
start: 0,
target: 1000
});
setTimeout(() => {
// 3秒后暂停动画
transition.pause();
setTimeout(() => {
// 再2秒后继续动画
transition.resume();
setTimeout(() => {
// 再3秒后停止动画
transition.stop();
}, 3 * 1000);
}, 2 * 1000);
}, 3 * 1000);
为方便起见,应用场景示例以
Vue
举例,但并不局限于Vue
使用
注:以下效果展示GIF图片经过压缩抽帧处理,看似卡顿实际很流畅
更多应用场景示例正在赶来的路上...
constructor(callback: XhTransitionValueCallback);
constructor(options: IXhTransitionOptions, callback: XhTransitionValueCallback);
// @since 0.0.11
options(options?: IXhTransitionOptions): IXhTransitionOptions;
status(): XhTransitionWorkStatus;
// @since 0.0.10
// 取值范围: 0 ~ 1
progress(): number;
请保证该方法在XhTransition#start之后调用
// @since 0.0.10
value(): number;
该方法可以接收一个配置项,除了上方介绍的
start
和target
属性外,亦支持IXhTransitionOptions
中的所有属性,将会采用Object.assign
与原配置合并
// @since 0.0.11 返回过渡动画实例
start(options: IXhTransitionOptions): XhTransition;
// @since 0.0.11 返回过渡动画实例
pause(): XhTransition;
// @since 0.0.11 返回过渡动画实例
resume(): XhTransition;
// @since 0.0.11 返回过渡动画实例
stop(): XhTransition;
interface IXhTransitionOptions {
/**
* 起始值
*/
readonly start?: number;
/**
* 目标值
*/
readonly target?: number;
/**
* 动画时长 (单位: ms)
*/
readonly duration?: number; // 默认值: 300
/**
* 预设曲线
*/
readonly preset?: XhTransitionPresetBezier; // 默认值: XhTransitionPresetBezier.linear
/**
* 自定义曲线 (优先级高于 preset)
*/
readonly bezier?: XhTransitionBezier;
/**
* 延迟开始时间 (单位: ms)
*/
readonly delay?: number; // 默认值: 0
/**
* 帧率 (即每秒回调多少次, 若为-1则使用requestAnimationFrame自动处理)
*/
readonly fps?: number; // 默认值: -1 (当不支持requestAnimationFrame时为默认值为30)
/**
* 动画开始回调
*/
readonly started?: XhTransitionCommonCallback;
/**
* 动画暂停回调
*/
readonly paused?: XhTransitionCommonCallback;
/**
* 动画继续回调
*/
readonly resumed?: XhTransitionCommonCallback;
/**
* 动画停止回调
*/
readonly stopped?: XhTransitionCommonCallback;
/**
* 动画完成回调
*
* @since 0.0.10
*/
readonly completed?: XhTransitionCommonCallback;
}
type XhTransitionBezier = [x1: number, y1: number, x2: number, y2: number];
enum XhTransitionPresetBezier {
/**
* 以相同速度开始至结束
*/
linear = "linear",
/**
* 慢速开始, 然后变快, 然后慢速结束
*/
ease = "ease",
/**
* 慢速开始
*/
easeIn = "ease-in",
/**
* 慢速结束
*/
easeOut = "ease-out",
/**
* 慢速开始和结束
*/
easeInOut = "ease-in-out"
}
type XhTransitionPresetBezierConfigType = { readonly [key in XhTransitionPresetBezier]: XhTransitionBezier };
const XhTransitionPresetBezierConfig: XhTransitionPresetBezierConfigType = {
[XhTransitionPresetBezier.linear]: [0, 0, 1, 1],
[XhTransitionPresetBezier.ease]: [0.25, 0.1, 0.25, 1],
[XhTransitionPresetBezier.easeIn]: [0.42, 0, 1, 1],
[XhTransitionPresetBezier.easeOut]: [0, 0, 0.58, 1],
[XhTransitionPresetBezier.easeInOut]: [0.42, 0, 0.58, 1]
};
type XhTransitionCommonCallback = (instance: XhTransition) => void;
type XhTransitionValueCallback = (value: number, instance: XhTransition) => void;
enum XhTransitionWorkStatus {
/**
* 空闲 (未开始或已停止)
*/
free = "free",
/**
* 运行中
*/
working = "working",
/**
* 已暂停
*/
paused = "paused"
}
❓:若有疑问或BUG反馈,可提交issues
🐧:暂未开通
FAQs
🏀 一个简单易用的贝塞尔曲线过渡动画工具
The npm package xiaohe-transition receives a total of 6 weekly downloads. As such, xiaohe-transition popularity was classified as not popular.
We found that xiaohe-transition demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
Socket researchers uncovered a malicious PyPI package exploiting Deezer’s API to enable coordinated music piracy through API abuse and C2 server control.
Research
The Socket Research Team discovered a malicious npm package, '@ton-wallet/create', stealing cryptocurrency wallet keys from developers and users in the TON ecosystem.
Security News
Newly introduced telemetry in devenv 1.4 sparked a backlash over privacy concerns, leading to the removal of its AI-powered feature after strong community pushback.