以下に、AstroプロジェクトにSlick Carouselを導入し、画像スライダーを実装する手順をまとめます。この手順では、useEffect
フックを使用せず、シンプルにスクリプトタグを使用して初期化します。
Astroコンポーネントに組み込む例を提案します。
必要なパッケージのインストール
まず、Slick CarouselとjQueryのパッケージをnpmを使用してインストールします。
npm install slick-carousel jquery
型定義の拡張
Slick Carouselのメソッドを認識させるために、jQueryの型定義を拡張します。プロジェクトのルートにsrc/types
ディレクトリを作成し、その中にjquery.d
というファイルを作成します。
// src/types/jquery.d
import 'slick-carousel';
declare global {
interface JQuery<TElement = HTMLElement> {
slick(options?: any): JQuery;
}
}
Astroコンポーネントの作成
次に、Astroコンポーネントを作成して、Slick Carouselを設定します。ここでは、画像とタイトルの配列を受け取り、スライダーを表示します。 styleはtailwindであてています。
ImageSlider
の作成
---
// src/components/ImageSlider
interface Props {
titles: string[];
images: string[];
}
const { titles, images }: Props = Astro.props;
---
<ul class="slick-carousel flex justify-center w-full my-[11vh] ml-[1vw]">
{images.map((image, index) => (
<li class="px-[1vw]">
<img
class="rounded-[1vw] w-[25vw]"
src={image}
alt={titles[index]}
/>
</li>
))}
</ul>
<script>
import "slick-carousel/slick/slick.css";
import "slick-carousel/slick/slick-theme.css";
import $ from "jquery";
import "slick-carousel/slick/slick.min.js";
$(() => {
$(".slick-carousel").slick({
centerMode: true,
slidesToShow: 5,
autoplay: true,
centerPadding: "",
arrows: false,
autoplaySpeed: 0,
speed: 1200,
cssEase: "linear",
responsive: [
{
breakpoint: 768,
settings: {
slidesToShow: 3,
},
},
],
});
});
</script>
コンポーネントの使用
次に、Astroページ内でコンポーネントを使用します。
index
の作成
---
// src/pages/index
import ImageSlider from '../components/ImageSlider';
const titles = ["Title 1", "Title 2", "Title 3", "Title 4", "Title 5"];
const images = [
"https://via.placeholder.com/600x400?text=Image+1",
"https://via.placeholder.com/600x400?text=Image+2",
"https://via.placeholder.com/600x400?text=Image+3",
"https://via.placeholder.com/600x400?text=Image+4",
"https://via.placeholder.com/600x400?text=Image+5",
];
---
<ImageSlider titles={titles} images={images} />
まとめ
- 必要なパッケージをインストールする。
- 型定義を拡張するためのファイル
src/types/jquery.d
を作成する。 ImageSlider
コンポーネントを作成し、Slick Carouselの設定を含める。index
ページを作成し、ImageSlider
コンポーネントを使用する。
これで、Slick CarouselがAstroプロジェクト内で正しく動作することを確認できます。npm run dev
を実行して、ブラウザでスライダーが正しく表示されることを確認してください。