ギャラリーのスライドショー
アルバムを全画面で開くと、視聴者が一時停止するまで写真が 1 枚ずつ自動で再生されます。どの写真も保存でき、保存されるのは画面に表示している縮小版ではなく、わかりやすい名前を付けた元のファイルです。
試してみる
どのバージョンも ./api をインポートしています。これはバックエンドの代わりで、photos は Lightbox の LightboxItem の形にしたアルバムです。各写真には、表示するアドレス、ダウンロードするファイル、保存するときの名前が入っています。自分のアルバムに置き換えてください。
typescript
import { cdnUrl } from '@reelkit/example-data';
// Stands in for your backend: an album of photos. Each one has the shape of
// `LightboxItem` from the lightbox of your framework, so the list goes to the
// lightbox as it is.
export interface Photo {
src: string;
title: string;
downloadUrl: string;
downloadName: string;
}
const kTitles = [
'Morning light',
'Coastline',
'Old town',
'Forest path',
'Harbour',
'Mountain pass',
'Market day',
'Night street',
'Lakeside',
];
export const photos: Photo[] = kTitles.map((title, i) => {
const file = `samples/images/image-${String(i + 1).padStart(2, '0')}.jpg`;
return {
// Your app would show a resized copy here and keep the original for the
// download. The sample CDN serves one size, so both point at one file.
src: cdnUrl(file),
title,
downloadUrl: cdnUrl(file),
downloadName: `${title.toLowerCase().replace(/\s+/g, '-')}.jpg`,
};
});サンプルのメディアは reelkit.dev でしか使えません
cdnUrl が作るのは cdn.reelkit.dev へのリンクで、このサーバーは ReelKit のサイトにしかファイルを返しません。お使いのアプリでは写真の表示もダウンロードもできないので、このファイルをコピーする前に src と downloadUrl を自分のファイルに向けてください。
GallerySlideshow.tsx
GallerySlideshow.vue
gallery-slideshow.component.ts
写真を開くと、すぐにスライドショーが始まり、3 秒ごとに次へ進みます。バーから一時停止するか、ダウンロードボタンで写真を保存してください。
仕組み
- 2 つのプロパティで、Lightbox がダウンロード付きのスライドショーになります。
autoAdvanceは Lightbox が開いた瞬間に再生を始め、showDownloadは表示中の写真を保存するボタンを加えます。デフォルトのバーには、再生・一時停止ボタンとダウンロードボタンが自動で加わります。どちらのプロパティも React、Vue、Angular で説明しており、各ページのすぐ後ろにダウンロードの項があります。 - スライドショーは写真ごとに待ちます。
autoAdvanceIntervalは写真の読み込みが終わった時点から数えるので、接続が遅くても、誰も見ていない写真が飛ばされることはありません。タイミングを決めているのは core のcreateSlideshowControllerで、自動再生のガイドで説明しています。 - 主導権は視聴者にあります。 スワイプやキー操作で手動で進むと、スライドショーは続いたまま、次の写真の間隔が 0 から数え直されます。PlayPauseButton で止めたり再開したりでき、ポインターがボタンやキャプションの上にあるあいだは待機します。
loopを設定していなければ、最後の写真で止まります。 - 小さなコピーを表示し、元のファイルを保存します。
srcは画面に表示するものなので、縮小版にすればギャラリーは軽くなります。downloadUrlはボタンが保存するもの、downloadNameは保存されるファイル名なので、視聴者は内容のわかる名前で元の写真を手元に残せます。サンプルの CDN は 1 つのサイズしか配信しないので、ここでは両方が同じファイルを指しています。これらのフィールドは LightboxItem 型に載っています。 - 別オリジンからのダウンロードには CORS が必要です。 別オリジンへのリンクでは
download属性が無視されるので、Lightbox はファイルを取得して保存します。そのためには、ファイルのサーバーがお使いのサイトに対してAccess-Control-Allow-Originを返す 必要があります。返さない場合は代わりに写真を新しいタブで開くので、視聴者はそこから保存できます。downloadFileを参照してください。