Svelte Splide
Svelteインテグレーション
概要
Svelte SplideはSplideをSvelteプロジェクトに導入するためのパッケージです。
インストール
最新版をNPMから取得してください。
$ npm install @splidejs/svelte-splide
$ npm install @splidejs/svelte-splide
使用方法
コンポーネントの登録
パッケージから、Splide
とSplideSlide
の2つのコンポーネントをインポートします。
import
{
Splide
,
SplideSlide
}
from
'@splidejs/svelte-splide'
;
JavaScript
import { Splide, SplideSlide } from '@splidejs/svelte-splide';
これらを、以下のようにしてレンダリングしてください。
<
Splide
>
<
SplideSlide
>
<
img
src
=
"image1.jpg"
alt
=
"Image 1"
/
>
<
/
SplideSlide
>
<
SplideSlide
>
<
img
src
=
"image2.jpg"
alt
=
"Image 2"
/
>
<
/
SplideSlide
>
<
/
Splide
>
Svelte
<Splide> <SplideSlide> <img src="image1.jpg" alt="Image 1"/> </SplideSlide> <SplideSlide> <img src="image2.jpg" alt="Image 2"/> </SplideSlide> </Splide>
CSS
CSSファイルを選択し、インポートしてください。<link>
タグで読み込んでも構いません。
import
'@splidejs/splide/dist/css/splide.min.css'
;
// または
import
'@splidejs/splide/dist/css/themes/splide-skyblue.min.css'
;
JavaScript
import '@splidejs/splide/dist/css/splide.min.css'; // または import '@splidejs/splide/dist/css/themes/splide-skyblue.min.css';
Props
id
id: string
ルート要素のIDを決めます。
options
options: Options
Splide
のオプション をオブジェクトで渡します。
<
Splide
options
=
{
{
rewind
:
true
,
width
:
800
,
gap
:
'1rem'
,
}
}
>
<
/
Splide
>
Svelte
<Splide options={ { rewind: true, width : 800, gap : '1rem', } } > </Splide>
このプロパティはリアクティブであり、値を更新するとスライダー自身も更新されますが、読み取り専用のオプションは変更しないでください。
extensions
Extensions: Record<string, ComponentConstructor>
エクステンションをオブジェクト形式で追加します。
transition
Transition: ComponentConstructor
トランジションコンポーネントを上書きます。
hasSliderWrapper
hasSliderWrapper: boolean
トラック要素をスライダー要素で囲むかどうかを決めます。
スロット
スライダー内に追加で要素をレンダリングする目的で、いくつかのスロットが用意されています。たとえば矢印をカスタマイズする場合などに用います。
<
Splide
>
...
<
div
class
=
"splide__autoplay"
slot
=
"after-track"
>
<
button
class
=
"splide__play"
>
Play
<
/
button
>
<
button
class
=
"splide__pause"
>
Pause
<
/
button
>
<
/
div
>
<
/
Splide
>
Svelte
<Splide> ... <div class="splide__autoplay" slot="after-track"> <button class="splide__play">Play</button> <button class="splide__pause">Pause</button> </div> </Splide>
before-track | トラック要素の前に位置する |
---|---|
after-track | トラック要素の後に位置する |
before-slider | スライダー要素の前に位置する。 |
after-slider | スライダー要素の後に位置する。 |
イベント
Splide
コンポーネント経由で、Splide内のすべてのイベントにハンドラを登録できます。ハンドラの関数名はイベント名から生成されますが、キャメルケースへの変換、コロンの削除という2つの処理が行われます。たとえば、"arrows:mounted"は"arrowsMounted"に変換されます。
実際のイベントリストは、このソースから確認できます。
<
Splide
on
:
arrowsMounted
=
{
e
=>
{
console
.
log
(
e
.
detail
.
prev
)
}
}
>
Svelte
<Splide on:arrowsMounted={ e => { console.log( e.detail.prev ) } }>
Svelteのイベントハンドラは複数の引数を受け付けないため、ネイティブのCustomEvent
と同様detail
オブジェクトから取得する必要があります。このオブジェクトには、splide
としてSplideのインスタンスそのものも含まれています。たとえば、on:arrowsMounted
のdetail
は、splide
、prev
、next
の3つのプロパティをもっています。
Splideインスタンスの取得
Splideインスタンスを取得し直接操作したい場合は、Splide
コンポーネントのthis
を利用します。
<
Splide
bind:this
=
{
mySlider
}
>
...
<
/
Splide
>
Svelte
<Splide bind:this={ mySlider }> ... </Splide>
SvelteがSplide
コンポーネントをマウントした後、mySlider.splide
を介してインスタンスを取得できます(マウント前はundefined
です)。
onMount
(
(
)
=>
{
console
.
log
(
mySlider
.
splide
)
;
}
)
;
Svelte
onMount( () => { console.log( mySlider.splide ); } );
サンプル
以下に簡単な例を示します。
12345678910111213<
script
>
import
{
Splide
,
SplideSlide
}
from
'@splidejs/svelte-splide';
import
'@splidejs/splide/dist/css/themes/splide-default.min.css';
<
/
script
>
<
Splide
options
=
{
{
rewind
:
true
}
}
>
<
SplideSlide
>
<
img
src
=
"image1.jpg"
alt
=
"Image 1"
/
>
<
/
SplideSlide
>
<
SplideSlide
>
<
img
src
=
"image2.jpg"
alt
=
"Image 2"
/
>
<
/
SplideSlide
>
<
/
Splide
>
Svelte
<script> import { Splide, SplideSlide } from '@splidejs/svelte-splide'; import '@splidejs/splide/dist/css/themes/splide-default.min.css'; </script> <Splide options={ { rewind: true } }> <SplideSlide> <img src="image1.jpg" alt="Image 1"/> </SplideSlide> <SplideSlide> <img src="image2.jpg" alt="Image 2"/> </SplideSlide> </Splide>