-
-
Notifications
You must be signed in to change notification settings - Fork 9
/
ThumbnailsExample.svelte
58 lines (50 loc) · 1.31 KB
/
ThumbnailsExample.svelte
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
<script lang="ts">
import { Splide, SplideSlide } from '@splidejs/svelte-splide';
import { onMount } from 'svelte';
import { generateSlides } from '../../utils';
let main: Splide;
let thumbs: SplideSlide;
const slides = generateSlides();
const mainOptions = {
type : 'loop',
perPage : 2,
perMove : 1,
gap : '1rem',
pagination: false,
height : '10rem',
};
const thumbsOptions = {
type : 'slide',
rewind : true,
gap : '1rem',
pagination : false,
fixedWidth : 110,
fixedHeight : 70,
cover : true,
focus : 'center' as const,
isNavigation: true,
updateOnMove: true,
};
onMount( () => {
if ( main && thumbs ) {
main.sync( thumbs.splide );
}
} );
</script>
<div class="wrapper">
<h2 id="thumbnails-example-heading">Thumbnails</h2>
<Splide options={ mainOptions } bind:this={ main } aria-labelledby="thumbnails-example-heading">
{ #each slides as slide }
<SplideSlide>
<img src={ slide.src } alt={ slide.alt }>
</SplideSlide>
{ /each }
</Splide>
<Splide options={ thumbsOptions } bind:this={ thumbs }>
{ #each slides as slide }
<SplideSlide>
<img src={ slide.src } alt={ slide.alt }>
</SplideSlide>
{ /each }
</Splide>
</div>