//! Port of the https://codepen.io/ryanfinni/pen/VwZeGxN example use dioxus::prelude::*; fn main() { dioxus::launch(app); } fn app() -> Element { let mut animated_classes = use_signal(|| ["animated-text", ""]); rsx! { document::Link { rel: "stylesheet", href: asset!("./examples/assets/visible.css") } div { class: "container", p { "Scroll to the bottom of the page. The text will transition in when it becomes visible in the viewport." } p { "First, let's create a new project for our hacker news app. We can use the CLI to create a new project. You can select a platform of your choice or view the getting started guide for more information on each option. If you aren't sure what platform to try out, we recommend getting started with web or desktop:" } p { "The template contains some boilerplate to help you get started. For this guide, we will be rebuilding some of the code from scratch for learning purposes. You can clear the src/main.rs file. We will be adding new code in the next sections." } p { "Next, let's setup our dependencies. We need to set up a few dependencies to work with the hacker news API: " } p { "First, let's create a new project for our hacker news app. We can use the CLI to create a new project. You can select a platform of your choice or view the getting started guide for more information on each option. If you aren't sure what platform to try out, we recommend getting started with web or desktop:" } p { "The template contains some boilerplate to help you get started. For this guide, we will be rebuilding some of the code from scratch for learning purposes. You can clear the src/main.rs file. We will be adding new code in the next sections." } p { "Next, let's setup our dependencies. We need to set up a few dependencies to work with the hacker news API: " } p { "First, let's create a new project for our hacker news app. We can use the CLI to create a new project. You can select a platform of your choice or view the getting started guide for more information on each option. If you aren't sure what platform to try out, we recommend getting started with web or desktop:" } p { "The template contains some boilerplate to help you get started. For this guide, we will be rebuilding some of the code from scratch for learning purposes. You can clear the src/main.rs file. We will be adding new code in the next sections." } p { "Next, let's setup our dependencies. We need to set up a few dependencies to work with the hacker news API: " } h2 { class: animated_classes().join(" "), onvisible: move |evt| { let data = evt.data(); if let Ok(is_intersecting) = data.is_intersecting() { animated_classes.write()[1] = if is_intersecting { "visible" } else { "" }; } }, "Animated Text" } } } }