Fancybox v4でカルーセル(Carousel)を作る方法
Fancybox v4でカルーセル(Carousel)を作る方法
サンプル
HTMLコード
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width" />
<title>Fancybox Gallery demo(5)</title>
<link
rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/@fancyapps/ui@4.0/dist/fancybox.css"
/>
<style type="text/css">
.carousel .carousel__slide {
align-items: center;
background-color: #eee;
border-radius: 6px;
display: flex;
font-size: 2rem;
height:12vw;
justify-content: center;
margin-right: 6px;
transition: background .2s,color .2s;
}
</style>
</head>
<body>
<div id="myCarousel1" class="carousel">
<div class="carousel__slide">1</div>
<div class="carousel__slide">2</div>
<div class="carousel__slide">3</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/@fancyapps/ui@4.0/dist/fancybox.umd.js"></script>
<script>
const myCarousel = new Carousel(document.querySelector(".carousel"), {
// Options
});
</script>
</body>
</html>
デモ
実装方法
Fancybox導入
まず、Fancyboxを利用できるようにする
CSSファイルインクルード
<link
rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/@fancyapps/ui@4.0/dist/fancybox.css"
/>
JSファイルインルード
次にBody部の下部にJSファイルをインクルードしてください。
<script src="https://cdn.jsdelivr.net/npm/@fancyapps/ui@4.0/dist/fancybox.umd.js"></script>
HTMLマークアップ
まず最初にカルーセルブロックを作ります。
<div class="carousel">
...
</div>
次に、カルーセルの項目ブロックをその中に設定します。
div class="carousel">
<div class="carousel__slide">1</div>
<div class="carousel__slide">2</div>
<div class="carousel__slide">3</div>
</div>
Carousel初期化
最後にJavascriptでCarouselを初期化すれば、実装できます。
<script>
const myCarousel = new Carousel(document.querySelector(".carousel"), {
// Options
});
</script>
スライドショー(自動再生)を有効化
サンプル
HTMLコード
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width" />
<title>Fancybox Gallery demo(5)</title>
<link
rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/@fancyapps/ui@4.0/dist/fancybox.css"
/>
<style type="text/css">
#mainCarousel {
color: #170724;
--carousel-button-bg: #fff;
--carousel-button-shadow: 0 2px 1px -1px rgb(0 0 0 / 20%),
0 1px 1px 0 rgb(0 0 0 / 14%), 0 1px 3px 0 rgb(0 0 0 / 12%);
--carousel-button-svg-width: 20px;
--carousel-button-svg-height: 20px;
--carousel-button-svg-stroke-width: 2.5;
}
.carousel__button.is-prev {
left: 50px;
}
.carousel__button.is-next {
right: 50px;
}
#mainCarousel .carousel__slide {
width: 70%;
padding: 0;
}
</style>
</head>
<body>
<div id="mainCarousel" class="carousel">
<div class="carousel__slide">
<img data-lazy-src="https://www.single-life.tokyo/wp-content/uploads/2021/07/DSC06344.jpg" />
</div>
<div class="carousel__slide">
<img data-lazy-src="https://www.single-life.tokyo/wp-content/uploads/2021/07/DSC06513.jpg" />
</div>
<div class="carousel__slide">
<img data-lazy-src="https://www.single-life.tokyo/wp-content/uploads/2021/07/DSC07591.jpg" />
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/@fancyapps/ui@4.0/dist/carousel.umd.js"></script>
<!-- スライドショーの実行ライブラリ -->
<script src="https://cdn.jsdelivr.net/npm/@fancyapps/ui@4.0/dist/carousel.autoplay.umd.js"></script>
<script>
var myCarousel = new Carousel(document.querySelector("#mainCarousel"), {
Autoplay: {
timeout : 10,
hoverPause : false
},
});
</script>
</body>
</html>
デモ
実装方法
以下のライブラリを読み込んでください。これでオートプレイ(自動再生)が有効になります。
<script src="https://cdn.jsdelivr.net/npm/@fancyapps/ui@4.0/dist/carousel.autoplay.umd.js"></script>
このソースを読み込むだけです。デフォルトは「3000ミリ秒」なので3秒ごとにスライドが切り替わ和っていきます。
オプション指定
<script>
var myCarousel = new Carousel(document.querySelector("#mainCarousel"), {
Autoplay: {
timeout : 10,
hoverPause : false
},
});
</script>
Autoplayオプションで、値を指定すれば、カスタマイズできます。
timeout
自動再生の項目切り替え実行間隔をミリ秒で指定するオプションです。
デフォルトは「3000」(ミリ秒)で3秒となっている。
hoverPause
カルーセルの項目にカーソルを当てた時に、切り替え処理を停止させるかどうかのオプションです。デフォルトは「true」でカーソルを乗せると一時停止します。
オプション指定
最後にオプションを紹介したいと思います。
サンプル
HTMLコード
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width" />
<title>Fancybox Gallery demo(5)</title>
<link
rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/@fancyapps/ui@4.0/dist/fancybox.css"
/>
<style type="text/css">
.carousel .carousel__slide {
align-items: center;
background-color: #eee;
border-radius: 6px;
display: flex;
font-size: 2rem;
height: 12vw;
justify-content: center;
margin-right: 6px;
transition: background .2s,color .2s;
}
.carousel.is-small .carousel__slide.is-selected {
background: #00c8b0;
color: #fff;
}
carousel.is-small .carousel__slide {
width: 15%;
}
.carousel__dots {
color: red;
}
</style>
</head>
<body>
<div id="myCarousel1" class="carousel is-small"></div>
<div id="myCarousel2" class="carousel is-small" >
<div class="carousel__slide" style="width:10%">1</div>
<div class="carousel__slide" style="width:10%">2</div>
<div class="carousel__slide" style="width:10%">3</div>
<div class="carousel__slide" style="width:10%">4</div>
<div class="carousel__slide" style="width:20%">5</div>
<div class="carousel__slide" style="width:20%">6</div>
<div class="carousel__slide" style="width:20%">7</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/@fancyapps/ui@4.0/dist/carousel.umd.js"></script>
<script>;
const myCarousel1 = new Carousel(document.querySelector("#myCarousel1"), {
slides: [
{ html: "First slide" },
{ html: "Second slide" },
{ html: "Third slide" },
],
});
const myCarouse2 = new Carousel(document.querySelector("#myCarousel2"), {
slidesPerPage :2,
center :false,
initialPage :2,
friction :0.35,
fill :false,
infinite:false,
dragFree :false,
classNames : {
viewport: "carousel__viewport",
track: "carousel__track",
slide: "carousel__slide",
slideSelected: "is-selected", /* 選択時適用されるクラス */
},
l10n :{
NEXT: "次へ",
PREV: "前へ",
GOTO: "スライド番号 %d へ移動",
}
});
</script>
</body>
</html>
デモ
オプション
オプションを紹介していきます。
slides
スライドの内容を定義できるオプションです。配列で指定し、その内容は「html」オプションでその内容を指定します。
preload
事前に読み込んでおくスライド数を指定できるオプションです。デフォルトは「0」です。
slidesPerPage
ページ単位当たりの表示スライド数を指定できるオプションです。デフォルトは「’auto‘」です。指定は’auto’か、正の整数値を指定してください。
initialPage
初期表示するページ番号を指定できるオプションです。デフォルトは「0」です。
friction
スライドを切り替える際の速さを定義できるオプションです。デフォルトは「0.92」です。
center
アクティブな(選択済み)のスライドを中央に配置するかどうかを指定できるオプションです。デフォルトは「true」です。
infinite
カルーセルのスクロールが最後に達しても最初のスライドに戻ることができるかどうかを指定できるオプションです。デフォルトは「true」で最後のスライドに到達すると最初のスライドに戻ります。
fill
オプション「infiite」が『false』の場合、最初のスライド、または、最後のスライド表示時に、余白を埋めるかどうかのオプションです。デフォルトは「true」で、余計な余白を作らないようにスライド表示されます。
dragFree
カルーセルのスライドを好きな位置で止めることができるオプションになります。デフォルトは「false」で好きな位置で停止することはできません。
classNames
カルーセルの様々な要素のクラス名を定義できるオプションです。デフォルトは以下の通りです。
{
viewport: "carousel__viewport",
track: "carousel__track",
slide: "carousel__slide",
// 表示中のスライドに適用されるクラス
slideSelected: "is-selected",
}
l10n
代替テキストに設定される文字列を定義できるオプションです。デフォルトは以下の通りです。
{
NEXT: "Next slide",
PREV: "Previous slide",
GOTO: "Go to slide %d",
}
ご参考
関連ページ
- Fancybox v4でギャラリーを作る方法
- Fancybox v5でカルーセル(Carousel)を作る方法
- Bootstrapでカルーセル(Carousel)を作る方法
- jQueryプラグイン「Owl Carousel 2」を使ってカルーセル/スライダーを設定する方法
- カルーセル(Carousel)を自作する方法
- 「Shoelace」でカルーセル(Carousel)を作成する方法
- スライドショーギャラリー(Slideshow Gallery)を自作する方法
- スライダープラグイン「slick」の紹介
- スライダープラグイン「Flickity」の紹介