プロパティ | タイプ | デフォルト値 | 説明 |
---|---|---|---|
bool | true | タブキー、矢印キーの有効/無効化 | |
bool | false | スライダーの高さの自動調整の有効化/無効化 | |
bool | true | ナビゲーションアロー(矢印)の表示/非表示 | |
int | 3000 | 各自動スクロール間の遅延時間 | |
func | Default | スライドのインデックスが変更された後に呼び出されるコールバック関数。indexパラメータの設定が必要 (現在表示しているスライドのインデックス) | |
func | dots => <ul>{dots}</ul> | カスタムなドット(ページネーションの点)のテンプレート作成 | |
ref | undefined | 別のスライダーへの参照を提供し、スライダーを同期させる | |
int | 3000 | 自動スクロール間の遅延時間(ミリ秒単位)) | |
bool | false | スライダーの自動再生の有効化/無効化 | |
func | null | スライドが変更される前に実行されるコールバック関数 | |
bool | false | 現在のスライドを中央に配置 | |
string | ‘50px’ | 中央に配置されているスライドと周囲の要素との間に追加の余白(パディング)を設定 | |
string | ‘’ | 内部のスライダー要素に適用するためのCSSクラス名を指定 | |
func | i => <button>{i + 1}</button> | スライダーのページングを独自のカスタムテンプレートに置き換える関数 | |
string | 'slick-dots’ | スライダーのドット(ページングのインジケーター)のためのCSSクラスを指定 | |
bool | Default | スライダーのページング(インジケーター)としてドットを表示/非表示化 | |
bool | true | スライドのスクロール機能を無効/有効 | |
string | 'linear’ | アニメーションの進行速度を制御、スライダーのアニメーションがどのように進行するかを制御 | |
bool | Default | スライドの切り替えがフェードインとフェードアウトのアニメーション | |
bool | false | スライドをクリックした際にそのスライドに自動的に移動 | |
bool | true | スライドの無限にスクロール有効/無効化 | |
int | 0 | 最初に表示するスライドのインデックスを設定 | |
ondemand/ progressive | null | スライドイメージのコンテンツを読み込む速度 | |
func | null | スライドが端にドラッグされたときのイベント | |
func | null | コンポーネントの初期化時に実行される処理 | |
func | null | スライドが遅延読み込みされた後に実行される処理 | |
func | null | コンポーネントが再描画された後に実行される処理 | |
func | null | スライドがスワイプによって変更された後に実行される処理 | |
bool | false | ナビゲーションドットにカーソルを合わせている間、自動再生を一時停止するかどうかを制御 | |
bool | false | スライドにフォーカスがある際に自動再生有効/無効化 | |
bool | true | スライドのトラック上にカーソルがある際に自動再生有効/無効化 | |
array {breakpoint, settings} | null | ブレークポイントごとにカスタマイズするための設定 | |
integer | 1 | スライド内で表示されるコンテンツの行数を指定 | |
bool | false | スライダーの表示順設定(trueの場合、逆方向、右から左) | |
string | 'div’ | スライダー内の各スライドを包むコンテナの要素タイプ(HTML tags:li,article,section,etc…) | |
int | 1 | グリッドモードで表示するスライドの数 | |
int | 1 | 一度に何枚のスライドをスクロールするかを指定 | |
int | 1 | 1つのフレーム内に表示するスライドの数を指定 | |
int | 500 | スライドのアニメーション速度 | |
bool | false | ドラッグやスワイプでスライドを切り替える有効/無効化 | |
bool | true | スワイプによるスライド変更が有効/無効化 | |
bool | true | ユーザーのタッチ操作によるスワイプを有効または無効 | |
int | 5 | スワイプ操作の認識閾値を設定 | |
bool | true | CSSトランジションを有効または無効 | |
bool | true | CSSトランスフォームを有効または無効 | |
bool | false | スライダー内のスライドの幅を可変にするかどうかを指定 | |
bool | false | スライダーを垂直方向に配置するかどうかを指定 |
メソッド
以下はReact Slickが提供するメソッドの一覧です。
Args | デフォルト値 | 説明 | |
---|---|---|---|
index, dontAnimate | null, false | 指定したスライドのインデックスに移動するための関数 | |
none | none | 現在表示されているスライドの次のスライドに移動する | |
none | none | 自動再生中のスライダーを一時的に停止する | |
none | none | 一時停止していた自動再生を再開する | |
none | none | 前のスライドに移動する |
インストレーション
以下はReact Slickのインストール手順です。
- パッケージのインストール
# npmを使用する場合
npm install @types/react-slick --save-dev
# yarnを使用する場合
yarn add @types/react-slick --dev
- CSSのインストール
# npmを使用する場合
npm install slick-carousel --save
# yarnを使用する場合
yarn add slick-carousel
実装
- インポート
react-slickライブラリと必要なCSSをインポートします。
import Slider from 'react-slick'; import 'slick-carousel/slick/slick.css'; import 'slick-carousel/slick/slick-theme.css';
- 基本的な記述方法
const settings = { dots: true, }; <Slider {...settings}> <img src= '../../..' alt="Slide image1"></img> {/* ... */} <img src= '../../..' alt="Slide image5"></img> </Slider>
- 最初にシンプルなSliderを作ってみましょう!
MainSlider.tsx
import React,{useState} from 'react'; import Slider from 'react-slick'; import 'slick-carousel/slick/slick.css'; import 'slick-carousel/slick/slick-theme.css'; import '../styles/mainSlider.css'; import image00 from '../assets/images/nature00.jpg'; import image01 from '../assets/images/nature01.jpg'; import image02 from '../assets/images/nature02.jpg'; const MainSlider = () => { const settings = { dots: true, }; return ( <div className = "SliderContainer"> <h2 className="Title">Welcome to React Slider!</h2> <Slider className= "SliderSection" {...settings}> <img className= "SlideImage" src= {image00} alt="Slide image1"></img> <img className= "SlideImage" src= {image01} alt="Slide image2"></img> <img className= "SlideImage" src= {image02} alt="Slide image3"></img> </Slider> </div> ); }; export default MainSlider;
mainSlider.css
.SliderContainer{ width:800px; height:560px; margin: 20px 10px 0px 50px; } .Title{ color: #000a80; font-size: 32px; font-weight: 700; text-align: center; } .SliderSection{ width: inherit; height: inherit; } .SlideImage{ object-fit: cover; }
🎬 Watch the Result:
- スライドプロパティの実装
今回はスライドプロパティを使って色々実装してみます。
スライドプロパティの詳細説明は[設定と構成]を参考してください。
MainSlider.tsx
import React,{useState} from 'react'; import Slider from 'react-slick'; import 'slick-carousel/slick/slick.css'; import 'slick-carousel/slick/slick-theme.css'; import '../styles/mainSlider.css'; import image00 from '../assets/images/nature00.jpg'; import image01 from '../assets/images/nature01.jpg'; import image02 from '../assets/images/nature02.jpg'; const MainSlider = () => { const [currentImageName, setCurrentImageName] = useState('Mountain'); const [textColor, setTextColor] = useState('red'); // スライドが変更された後に実行 const handleSlideChange = (index: number) => { if(index === 0){ setCurrentImageName('Mountain'); setTextColor('red'); }else if(index === 1){ setCurrentImageName('Garden'); setTextColor('blue'); }else if(index === 2){ setCurrentImageName('Forest'); setTextColor('green'); } }; const settings = { dots: true, // ナビゲーションドットを表示するかどうか infinite: true, // スライドを無限にループさせるかどうか slidesToShow: 1, // 1回に表示するスライドの数 slidesToScroll: 1, // 1回にスクロールするスライドの数 autoplay: true, // 自動再生を有効にするかどうか autoplaySpeed: 3500, // 自動再生時のスライド切り替えの速さ(ミリ秒) speed: 1000, // スライドのトランジションアニメーションの速さ(ミリ秒) pauseOnHover: false, // ホバー時に自動再生を一時停止するかどうか afterChange: (index: number) => { handleSlideChange(index); // スライドが変更された後に実行されるコールバック関数 }, }; return ( <div className = "SliderContainer"> <h2 className="Title">Welcome to React Slider!</h2> <Slider className= "SliderSection" {...settings}> <img className= "SlideImage" src= {image00} alt="Slide image1"></img> <img className= "SlideImage" src= {image01} alt="Slide image2"></img> <img className= "SlideImage" src= {image02} alt="Slide image3"></img> </Slider> <p> The current slide is{' '} <span style={{ color: textColor, fontSize: "24px", fontWeight: 600 }}>{currentImageName}</span>. </p> </div> ); }; export default MainSlider;
mainSlider.css
.SliderContainer{ width:800px; height:560px; margin: 20px 10px 0px 50px; } .Title{ color: #000a80; font-size: 32px; font-weight: 700; text-align: center; } .SliderSection{ width: inherit; height: inherit; } .SlideImage{ object-fit: cover; } //ドットの色変更の為 .slick-dots li button:before { color: gray; }
🎬 Watch the Result:
- カスタムCSSをドットに適用する方法
dotsClassについて
dotsClassは、スライダーのドット(ページングのインジケーター)のためのCSSクラスを指定するためのプロパティです。デフォルトでは'slick-dots'というクラスが使われます。
もし一部のスタイルを変更したい場合、slick-dotsクラスを直接指定してCSSを追加することも可能です。しかし、slick-dotsのスタイルを一切使用せず、カスタムなスタイルを適用したい場合は、settingsオブジェクトの中にdotsClassプロパティを設定します。
const settings = { ... dotsClass: "custom-slick-dots", // ドットのカスタムクラス名 ... };
そして、次のようなCSSを追加します。
.custom-slick-dots { bottom: 60px !important; position: absolute; display: block; width: 100%; padding: 0; margin: 0; list-style: none; text-align: center; } .custom-slick-dots li { position: relative; display: inline-block; width: 20px; height: 20px; margin: 0 5px; padding: 0; cursor: pointer; } .custom-slick-dots li button{ font-size: 0; line-height: 0; display: block; width: 20px; height: 20px; padding: 5px; cursor: pointer; color: transparent; border: 0; outline: none; background: transparent; } .custom-slick-dots li button:before { font-family: 'slick'; font-size: 6px; line-height: 20px; position: absolute; top: 0; left: 0; width: 20px; height: 20px; content: '•'; text-align: center; opacity: .25; -webkit-font-smoothing: antialiased; background: #ebeaf0; color: #797f94; border-radius: 50%; transition: 0.3s; } .custom-slick-dots li.slick-active button:before { opacity: .75; color:green; }
🎬 Watch the Result:
DevpediaCode編集部
DevpediaCodeはWeb、AI、Iot、ローコードなどプログラムに関する最新ITテーマの情報を発信するメディアです。
お問合せ下記のURLからお願いします。
https://devpediacode.com/contact