We Blog Weblog

スライダー

Web

2023年4月15日

みなさんこんにちは。
ケミストのWeb担当みやのです。

「Web」記事では、これまでに得たWebに関する知識を記録として残していきたいと思います。

今回は「スライダー」について書きます。

スライダーとは

スライダーとは、Webサイトにおけるスライドショーです。

カルーセル(carousel:回転木馬)とも呼ばれます。

トップページで、大きい画像が次々に変わっていくアレですね。

うちのトップページでも使っています。


ちなみに以下のようなスライドして数値を選べるやつ(input type="range")

 

現在の値はです

もスライダーというみたいです。ややこしい。

スライダーのプラグイン

スライダーを実装するプラグインがいろいろあるようです。

slick
bxslider
Swiper

それぞれのプラグインについては別の記事で書こうと思います。

うちのトップページではbxsliderを使っていますが、bxsliderは2018年以降更新されていないようです。Swiperに変えようかな...

Bootstrapでは

参考:Bootstrap4.2日本語リファレンス|Carousel

Bootstrapにもスライダーを実装できる機能(carousel)があります。早速作ってみましょう。

まずは全体を<div>と</div>で囲って、carouselslideという2つのクラスを付与します。

<div class="carousel slide">

</div>

さらにIDを設定し(仮にsampleとします)data-ride="carousel"と記述します。

<div class="carousel slide" id="sample" data-ride="carousel">

</div>

次は中身の作成です。今回は3ページで作ってみます。

さっきの<div>の中に、carousel-innnerを設置します。

<div class="carousel slide" id="sample" data-ride="carousel">

  <div class="carousel-inner">

  </div>

</div>

さらにcrousel-innnerの中にcarousel-itemを3つ設置し、1つめにはさらにactiveというクラスを当てます。

<div class="carousel slide" id="sample" data-ride="carousel">

  <div class="carousel-inner">

    <div class="carousel-item active"></div>
	<div class="carousel-item"></div>
	<div class="carousel-item"></div>

  </div>

</div>

それぞれのcrousel-itemの中に画像を設置します。d-blockw-100というクラスを当てておきます。

<div class="carousel slide" id="sample" data-ride="carousel">

  <div class="carousel-inner">

    <div class="carousel-item active"><img src="img/サイ.jpg" class="d-block w-100"></div>
	<div class="carousel-item"><img src="img/ゴリラ.jpg" class="d-block w-100"></div>
	<div class="carousel-item"><img src="img/ゾウ.jpg" class="d-block w-100"></div>

  </div>

</div>

本当はこの時点でスライダーとして動くはずなんですがなぜか動きません。何でやねん。

前後の矢印(コントローラー)を追加してみます。


crousel-innnerの外にaタグを2セット設置します。

それぞれにhref="#sample"role="button"と記述します。

<div class="carousel slide" id="sample" data-ride="carousel">

  <div class="carousel-inner">

    <div class="carousel-item active"><img src="img/サイ.jpg" class="d-block w-100"></div>
	<div class="carousel-item"><img src="img/ゴリラ.jpg" class="d-block w-100"></div>
	<div class="carousel-item"><img src="img/ゾウ.jpg" class="d-block w-100"></div>

  </div>

  <a href="#sample" role="button"></a>

  <a href="#sample" role="button"></a>

</div>

さらに片方にclass="carousel-control-prev"data-slide="prev"

もう片方はclass="carousel-control-next"data-slide="next"と記述します。

<div class="carousel slide" id="sample" data-ride="carousel">

  <div class="carousel-inner">

    <div class="carousel-item active"><img src="img/サイ.jpg" class="d-block w-100"></div>
	<div class="carousel-item"><img src="img/ゴリラ.jpg" class="d-block w-100"></div>
	<div class="carousel-item"><img src="img/ゾウ.jpg" class="d-block w-100"></div>

  </div>

  <a class="carousel-control-prev" href="#sample" role="button" data-slide="prev"></a>

  <a class="carousel-control-next" href="#sample" role="button" data-slide="next"></a>

</div>

それぞれの<a>と</a>の中に以下のように記述します。

<div class="carousel slide" id="sample" data-ride="carousel">

  <div class="carousel-inner">

    <div class="carousel-item active"><img src="img/サイ.jpg" class="d-block w-100"></div>
	<div class="carousel-item"><img src="img/ゴリラ.jpg" class="d-block w-100"></div>
	<div class="carousel-item"><img src="img/ゾウ.jpg" class="d-block w-100"></div>

  </div>

  <a class="carousel-control-prev" href="#sample" role="button" data-slide="prev">
    <span class="carousel-control-prev-icon" aria-hidden="true"></span>
    <span class="sr-only">Previous</span>
  </a>

  <a class="carousel-control-next" href="#sample" role="button" data-slide="next">
    <span class="carousel-control-next-icon" aria-hidden="true"></span>
    <span class="sr-only">Next</span>
  </a>

</div>

 

やっと動いたぁ

一応スマホのスワイプにも対応しています。


せっかくなので、画面中央下の横棒(インジケーター)を追加してみましょう。

carousel-innnerの外(上?)に<ol>を設置し、その中に<li>を3つ追加します。

<div class="carousel slide" id="sample" data-ride="carousel">

  <ol>
    <li></li>
    <li></li>
    <li></li>
  </ol>

  <div class="carousel-inner">

    <div class="carousel-item active"><img src="img/プテラ.jpg" class="d-block w-100"></div>
	<div class="carousel-item"><img src="img/トリケラ.jpg" class="d-block w-100"></div>
	<div class="carousel-item"><img src="img/ティラノ.jpg" class="d-block w-100"></div>

  </div>

  <a class="carousel-control-prev" href="#sample" role="button" data-slide="prev">
    <span class="carousel-control-prev-icon" aria-hidden="true"></span>
    <span class="sr-only">Previous</span>
  </a>

  <a class="carousel-control-next" href="#sample" role="button" data-slide="next">
    <span class="carousel-control-next-icon" aria-hidden="true"></span>
    <span class="sr-only">Next</span>
  </a>

</div>

さらに以下のように記述します。

<div class="carousel slide" id="sample" data-ride="carousel">

  <ol class="carousel-indicators">
    <li data-target="#sample" data-slide-to="0" class="active"></li>
    <li data-target="#sample" data-slide-to="1"></li>
    <li data-target="#sample" data-slide-to="2"></li>
  </ol>

  <div class="carousel-inner">

    <div class="carousel-item active"><img src="img/プテラ.jpg" class="d-block w-100"></div>
	<div class="carousel-item"><img src="img/トリケラ.jpg" class="d-block w-100"></div>
	<div class="carousel-item"><img src="img/ティラノ.jpg" class="d-block w-100"></div>

  </div>

  <a class="carousel-control-prev" href="#sample" role="button" data-slide="prev">
    <span class="carousel-control-prev-icon" aria-hidden="true"></span>
    <span class="sr-only">Previous</span>
  </a>

  <a class="carousel-control-next" href="#sample" role="button" data-slide="next">
    <span class="carousel-control-next-icon" aria-hidden="true"></span>
    <span class="sr-only">Next</span>
  </a>

</div>

 

まとめ

うちのサイトはBootstrap4.1だったのですが、スワイプに対応しているのは4.2以降らしいので、このページだけ4.2にしました。

スマホではちょっと使いづらいかな~

jQueryは1だとコントローラーが動かなかったので3にしました。スムーススクロールの挙動がちょっとおかしいけど気にしない

そのうち他のプラグインに挑戦してみようと思います!

この記事を書いた人
みやの
Web・DTP担当

Contact Us

ご意見、ご相談、料金のお見積もりなど、お気軽にお問い合わせください。

お問い合わせはこちら

TOP