contact

blog-MainImage

Kabe-Log

2021-08-10

2021-11-11

react-slickの矢印をカスタマイズしてオリジナリティを出す

React.js,

Library,

frontend

ライブラリのスライダーは便利ですが、矢印ボタンがデフォルトのままでは、オリジナリティを出せないですよね。

そこで今回は、react-slickのデフォルトでもつ矢印をスタイル変更していきたいと思います。

react-slickとは

react-slickとは、スライダーを簡単に実装できるReact.jsのライブラリ。 オプションが豊富で、jQueryのプラグインとして有名だったそうです。

スライダーの実装

1, react-slickをインストール

yarn add react-slick slick-carousel @types/react-slick

slick-carouselは、slickのcssファイルになります。

2, react-lickをimport

import Slick from "react-slick"; import "slick-carousel/slick/slick.css"; import "slick-carousel/slick/slick-theme.css";

3, sliderの設定を記述

const settings = { dots: true, infinite: true, speed: 500, slidesToShow: 1, slidesToScroll: 1, nextArrow: <SampleNextArrow />, //矢印のコンポーネントを自分で実装 prevArrow: <SamplePrevArrow />, };

オプションについては、後述します。

ここで、nextArrow、prevArrowにコンポーネントを指定することによって、矢印のボタンをカスタマイズすることができます。 こちらに渡すのはコンポーネントなので、そのままJSXの要素を渡すとエラーになります。僕はここで、悩みました。 react-slick1.webp

4, sliderを配置

Slickタグの中にスライドさせたい要素を配置します。

return ( <div className={styles.flex}> <ul className={styles.content}> <Slick {...settings}> <div className={styles.slider1} /> <div className={styles.slider2} /> </Slick> </ul> </div> );

もっと上手いやり方があると思うのですが、全画面のsliderを作成する場合、以下のcssを当てることで実装できます。見やすいように背景を黒色にしています。

.flex { width: 100%; height: 100vh; position: relative; display: flex; justify-content: center; background-color: #002643; } .content { width: calc(100% - 50px); } .slider1 { background-color: yellow; text-align: center; height: 100vh; width: 100%; } .slider2 { background-color: red; text-align: center; height: 100vh; width: 100%; }

react-slick2.webp これで、スライダーの実装はできました。両ボタンを押すとスライダーが作動します。

5, コンポーネントの作成

ではカスタマイズするボタンコンポーネントを作成します。

ここで、react-slickが持っているclassNameやstyleをpropsをして渡すことができるのですが、今回スタイルは自分でカスタマイズするので、onClickだけpropsで渡します。

const SamplePrevArrow = ({onClick}: Props) => { return ( <div onClick={onClick} > <button className={styles.prev}>Prev</button> </div> ); }

SampleNextArrowも同じように、記述します(ここでは省略)。

onClickの型はベストプラクティスがわからず、

interface Props { onClick?: (event: React.MouseEvent<HTMLSpanElement, MouseEvent>) => void; }

6, スタイルを当てる

ボタンにスタイルを当てます。今回はとてもシンプルに、

.next { width: 50px; height: 50px; color: #fff; font-size: 16px; background-color: orange; position: absolute; z-index: 50; top: 30px; right: 30px; } .prev { width: 50px; height: 50px; color: #fff; font-size: 16px; background-color: skyblue; position: absolute; z-index: 50; top: 30px; left: 30px; }

react-slick3.webp これで、スライダーの矢印ボタンをカスタマイズすることができました。

react-slickのオプション

オプション名内容
dotsドットの表示・非表示
infinite無限にスライド可能か
speedスライドするスピード
slideToShow1度に表示するスライドの数
slideToScroll1度のスクロールで何枚スライドするか
arrowsスライドの左右にある矢印の表示・非表示
autoplay自動でスライドする時のスピード

他にもさまざまなオプションがあります。

【react-slick】

search

recommended

AWS資格 SAPとSOAを取得したので、対策や受験時の感想について
2022-05-23AWS資格 SAPとSOAを取得したので、対策や受験時の感想について
実務経験一年の転職活動(エンジニア生活:2月)
2022-03-15実務経験一年の転職活動(エンジニア生活:2月)
2022年は、フルスタックエンジニアに(エンジニア生活:1月)
2022-02-072022年は、フルスタックエンジニアに(エンジニア生活:1月)
「AWSエンジニア入門講座――学習ロードマップで体系的に学ぶ」を読んだ感想
2022-01-29「AWSエンジニア入門講座――学習ロードマップで体系的に学ぶ」を読んだ感想
エンジニア転職した一年の振り返り
2022-01-04エンジニア転職した一年の振り返り
Remixと朝活(エンジニア生活:11月)
2021-12-02Remixと朝活(エンジニア生活:11月)

contact