Contents
技術構成
Laravel | Laravel Framework 10.15.0 |
React | react-dom@18.2.0 |
DaisyUi | daisyui@3.5.0 |
tailwind | @tailwindcss/forms@0.5.4 |
いい感じなフォトギャラリーないのか
HP作成を行っているとスライダーの要望が度々出てくるはずです。
かくいう僕も今回、そういった要望があってスライダーを導入しなければいけない状態でした。
一度、jQueryで生実装したことがあるのですが、なんやかんや面倒くさい思いをした苦い経験があったので、今回は生実装を避けたいという思いからReact でいい感じなライブラリないのか調べたところ「react-image-gallery」に出会いました。
天下のReact 様は流石だなと言う感じです。
react-image-gallery以外の選択肢としては以下のようなものが挙げられます。
react-image-gallery | https://github.com/xiaolin/react-image-gallery |
画像のスライドショーを作成するための高機能なライブラリ | |
react-images | https://github.com/jossmac/react-images |
シンプルなカスタマイズ可能なグリッドスタイルのイメージギャラリーを作成するためのライブラリ | |
react-awesome-lightbox | https://github.com/photostory/react-awesome-lightbox |
モーダルウィンドウ内で画像を表示するためのライブラリ |
実際に導入
npm でインストール。
npm install react-image-gallery
インポート
import ImageGallery from 'react-image-gallery';
import 'react-image-gallery/styles/css/image-gallery.css';
※2行目のcss もインポートしてください。
css もインポートすることで梱包されているスタイルを当てることが可能です。
上記の設定で使う準備が完了です。
あとは自由に設定していくだけです。
今回はLaravel からデータを渡すため、コントローラーから配列を渡します。(本当はModel でデータ定義して渡すべきですが、)
$images = [
[
"original" => "/img/AsItFlows/asit_team.jpg",
"thumbnail" => "/img/AsItFlows/asit_team.jpg",
"originalAlt" => "チーム",
"thumbnailAlt" => "チーム",
"onErrorImageURL" => "/img/AsItFlows/logo.jpg",
],
[
"original" => "/img/AsItFlows/sunset.jpg",
"thumbnail" => "/img/AsItFlows/sunset.jpg",
"originalAlt" => "サンセット",
"thumbnailAlt" => "サンセット",
"onErrorImageURL" => "/img/AsItFlows/logo.jpg",
],
[
"original" => "/img/AsItFlows/surf_member.jpg",
"thumbnail" => "/img/AsItFlows/surf_member.jpg",
"originalAlt" => "メンバー",
"thumbnailAlt" => "メンバー",
"onErrorImageURL" => "/img/AsItFlows/logo.jpg",
],
...
];
shuffle($images);
return Inertia::render('Public/AsItFlows/Top', [
'items' => $images
]);
最後にjsx 側でいい感じに使用します。
<ImageGallery items={items}
showNav={true}
autoPlay={true}
showFullscreenButton={false}
useBrowserFullscreen={false}
showPlayButton={false}
/>
んー。素敵。