| Crates.io | dioxus-transition |
| lib.rs | dioxus-transition |
| version | 0.1.2 |
| created_at | 2025-05-17 11:59:30.606266+00 |
| updated_at | 2025-05-17 12:39:45.281008+00 |
| description | A Dioxus component for enter/leave transitions |
| homepage | |
| repository | https://github.com/dsplce-co/dioxus-transition |
| max_upload_size | |
| id | 1677821 |
| size | 74,596 |
π¬ Seamless transitions in Dioxus, inspired by Vueβs
<Transition>β declarative, built-in, composable.
This crate provides a fully reactive <Transition> component for Dioxus, allowing you to animate elements when they enter or leave the DOM.
β
Transition component for conditional DOM animations
β
Vue-style logic with signal-reactive updates
β
Built-in transitions: fade, blur β easy to extend
β
Opt-out of built-ins via default-features = false
β
Built for flexibility: own styles, fine-grained control
Add it to your Cargo.toml:
[dependencies]
dioxus-transition = { version = "0.1" }
or:
[dependencies]
dioxus-transition = { version = "0.1", default-features = false }
to disable the default stylesheet (opt out of default transition kinds).
use dioxus::prelude::*;
use dioxus_transition::prelude::*;
fn main() {
dioxus::web::launch(App);
}
#[component]
fn App() -> Element {
let mut visible = use_signal(bool::default);
rsx! {
div {
button {
onclick: move |_| visible.set(!visible()),
"Toggle"
}
Transition {
id: "square",
kind: "fade", // try "blur", or define your own
duration: 300,
if visible() {
div {
id: "square",
display: "block",
width: "200px",
height: "200px",
background: "red",
}
}
}
}
}
}
The <Transition> component:
Tracks whether its children are present or a placeholder (<!--placeholder-->)
On entrance: injects *-transition-hidden, then animates in with *-transition-activating
On exit: runs reverse animation and cleans up
You control:
id: DOM node to animatekind: animation class prefix (e.g. fade)duration: in msignore_first: skip entrance animation on first mount (default: false)/* fade */
.fade-transition-hidden {
opacity: 0;
}
.fade-transition-activating {
opacity: 1;
}
/* blur */
.blur-transition-hidden {
backdrop-filter: brightness(1) blur(0);
}
.blur-transition-activating {
backdrop-filter: brightness(0.375) blur(2px);
}
Donβt like them? Set default-features = false and roll your own π§
Use any CSS class name as kind. All that matters is you provide these two classes:
.<kind>-transition-hidden β hidden state.<kind>-transition-activating β visible stateπ¦ Crate: crates.io/crates/dioxus-transition
π οΈ Repo: github.com/dsplce-co/dioxus-transition
Contributions, issues, ideas? Hit us up β let's make transitions in Dioxus delightful π€
MIT or Apache-2.0, at your option.