blob: 806e414c572ea28b804291a5acb048790ffb7e2a (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
---
layout: demo_layout.njk
---
## Lazy Loading
This example shows how to lazily load an element on a page. We start with an initial
state that looks like this:
```html
<div hx-get="/graph" hx-trigger="load">
<img class="htmx-indicator" width="150" src="/img/bars.svg"/>
</div>
```
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
.htmx-settling img {
opacity: 0;
}
img {
transition: opacity 300ms ease-in;
}
```
<style>
.htmx-settling img {
opacity: 0;
}
img {
transition: opacity 300ms ease-in;
}
</style>
{% include demo_ui.html.liquid %}
<script>
server.autoRespondAfter = 2000; // longer response for more drama
//=========================================================================
// Fake Server Side Code
//=========================================================================
// routes
init("/demo", function(request, params){
return lazyTemplate();
});
onGet("/graph", function(request, params){
return "<img src='/img/tokyo.png'>";
});
// templates
function lazyTemplate(page) {
return `<div hx-get="/graph" hx-trigger="load">
<img class="htmx-indicator" width="120" src="/img/bars.svg"/>
</div>`;
}
</script>
|