@opentiny/tiny-toolkit-docs
Version:
这里对你的套件进行简单描述, 比如适用哪些场景,使用了什么技术, 有什么特点
62 lines (56 loc) • 2.92 kB
JavaScript
// 所有的动画效果
import { toEscapedSelector as e } from 'unocss';
const _s = {
run: 'running',
pause: 'paused', //
none: 'none',
both: 'both',
stay: 'forwards',
start: 'backwards',
ease: 'ease',
in: 'ease-in',
out: 'ease-out',
inout: 'ease-in-out',
linear: 'linear',
};
import * as keyframes from './keyframes/index';
export default function builder(option) {
return {
rules: [
// 动画效果及动画影响属性 ani-bounce-width#0px#-100px
// 操作的属性只能是纯数值+单位或无单位。只能操作1个属性
[
/^ani-(line|bounce|shake)-(\w+)#(-?\w+)#(-?\w+)$/,
([, name, prop, from, to], { rawSelector, currentSelector, variantHandlers, theme }) => {
return `
${e(currentSelector)}{
animation-name:${name + prop};
}
@keyframes ${name + prop} {
${keyframes[name](prop, from, to)}
}
`;
},
],
// 时长 last ani-l#3s ani-last#3s 必填项
[/^ani-(l|last)#(\d+\.?\d*)s$/, ([, tag, time]) => ({ 'animation-duration': `${time}s` })],
// 延迟 delay ani-d#3s ani-d#-3s ani-delay#-3s 默认0
[/^ani-(d|delay)#(-?\d+\.?\d*)s$/, ([, tag, time]) => ({ 'animation-delay': `${time}s` })],
// 次数 count ani-c#3 ani-count#3.5 ani-c#infinite ani-c#keep 默认1 小数表示执行一半就结束
[/^ani-(c|count)#(\d+\.?\d*)$/, ([, tag, time]) => ({ 'animation-iteration-count': `${time}` })],
[/^ani-(c|count)#(infinite|keep)$/, ([, tag]) => ({ 'animation-iteration-count': 'infinite' })],
// 是否循环往返 ani-round 添加则往返。 默认为: ani-normal 。不添加则每次循环,即每个周期都从头开始
['ani-round', { 'animation-direction': 'alternate' }],
['ani-normal', { 'animation-direction': 'normal' }],
// 结束时停住位置, ani-stop-stay ani-stop-none 默认为: 结束时,清除动画属性. 有delay时间时, stop-start表示,未开始时,位置于0%
[/^ani-stop-(stay|none|both|start)$/, ([, pos]) => ({ 'animation-fill-mode': `${_s[pos]}` })],
// 动画函数 ani-fun-ease 默认值 ease
[/^ani-(f|fun|function)-(ease|in|out|inout|linear)$/, ([, tag, pos]) => ({ 'animation-timing-function': `${_s[pos]}` })],
// ani-fun-step4
[/^ani-(f|fun|function)-step(\d)$/, ([, tag, num]) => ({ 'animation-timing-function': `steps(${num},start)` })],
// 动画开关, ani-run ani-pause 不添加则结束时,清除动画属性 【ani-stop-start还不行】
[/^ani-(run|pause)$/, ([, pos]) => ({ 'animation-play-state': `${_s[pos]}` })],
],
shortcuts: [],
};
}