7 个版本 (4 个重大变更)

0.5.2 2024年5月15日
0.5.1 2024年5月5日
0.5.0 2024年3月12日
0.4.0 2023年11月10日
0.1.0 2023年6月29日

#1502 in 网页编程

Download history 113/week @ 2024-05-03 118/week @ 2024-05-10 31/week @ 2024-05-17 2/week @ 2024-05-24 2/week @ 2024-06-07 2/week @ 2024-06-14 1/week @ 2024-06-21 10/week @ 2024-07-19 42/week @ 2024-07-26 8/week @ 2024-08-02 10/week @ 2024-08-09

每月 70 次下载

WTFPL 许可证

36KB
590

文档 | 演示

创建派生信号,该信号是原始信号的动画版本

use leptos::*;
use leptos_animation::*;

#[component]
pub fn Counter() -> impl IntoView {
    AnimationContext::provide();

    let (value, set_value) = create_signal(0.0);

    let animated_value = create_animated_signal(move || value.get().into(), tween_default);

    let clear = move |_| set_value.set(0.0);
    let decrement = move |_| set_value.update(|value| *value -= 1.0);
    let increment = move |_| set_value.update(|value| *value += 1.0);

    view! {
        <main class="simple">
            <button on:click=clear>"Clear"</button>
            <button on:click=decrement>"-1"</button>
            <button on:click=increment>"+1"</button>
            <div>"Value: " {value} <br/> "Animated value: " {animated_value}</div>
        </main>
    }
}

功能

  • 允许多个动画同时播放
  • 高效调用 window.request_animation_frame():只有当有动画播放时,并且每帧只调用一次,即使有多个动画信号正在运行。
  • 允许自定义持续时间、缓动函数、目标更新和缓动方法。可以用于任何类型。
  • 动画信号每帧同时更新。使用多个动画信号的特效每帧只调用一次。

依赖

约20-32MB
约512K SLoC