Spaces:
Running
Running
| import time | |
| from fasthtml.common import Button, Div, Img, NotStr, Style, fast_app | |
| css = """ | |
| .htmx-settling img { | |
| opacity: 0; | |
| } | |
| img { | |
| transition: opacity 300ms ease-in !important; | |
| } | |
| """ | |
| app, rt = fast_app(hdrs=[Style(css)]) | |
| def page(): | |
| return Div(hx_get=get_content, hx_trigger="load", cls="container")( | |
| Img(src="/img/bars.svg", alt="Result loading...", cls="htmx-indicator", width="150"), | |
| ) | |
| def get_content(): | |
| time.sleep(2) | |
| return Div( | |
| NotStr("<ins>This simple text takes 2s to load!</ins>"), | |
| Button("Reload", hx_target="body", hx_get=page), | |
| ) | |
| DESC = "Demonstrates how to lazy load content" | |
| HTMX_URL = "https://htmx.org/examples/lazy-load/" | |
| DOC = """ | |
| This example shows how to lazily load an element on a page. We start with an initial state that looks like this: | |
| ::page:: | |
| Which shows a progress indicator as we are loading the graph. The graph is then loaded and faded gently into view via a settling CSS transition: | |
| ::css:: | |
| """ | |
| HEIGHT = "200px" | |