JavaScriptでスライダーバーを実装する方法を現役エンジニアが解説【初心者向け】

初心者向けにJavaScriptでスライダーバーを実装する方法について現役エンジニアが解説しています。スライダーバーとは、値をスライドさせることでメーターなど変化する部品のことです。HTMLのinputタグのtypeのrangeやJavaScriptのライブラリのnouisliderを使う方法を解説します。

TechAcademyマガジンは受講者数No.1のオンラインプログラミングスクールTechAcademy [テックアカデミー]が運営。初心者向けに解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。

監修してくれたメンター

永井浩平

BtoBtoC事業を行っている会社で社内SEとして勤務。
バックエンド、フロント、クラウドなど幅広く業務を行う。
テックアカデミーでは、フロントエンドコース / Javaコースのメンター。

JavaScriptでスライダーバーを実装する方法について、テックアカデミーのメンター(現役エンジニア)が実際のコードを使用して初心者向けに解説します。

目次

そもそもJavaScriptについてよく分からないという方は、JavaScriptとは何なのかについて解説した記事を読むとさらに理解が深まります。

 

田島悠介

今回は、JavaScriptに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

JavaScriptでスライダーバーを実装する方法について詳しく説明していくね!

大石ゆかり

お願いします!

 

はじめに

Webサイトなどで、視覚的にわかりやすく操作させる「スライダーバー」について説明をします。

今回はHTML標準のスライダーバーだけでなく、公開されているライブラリを使い、高機能なスライダーバーを実装するところまで解説します。

ライブラリ:jQueryなどが有名ですが、便利な機能や汎用的な機能を集めたもの。

 

スライダーバーとは

下記のような値をスライドさせることで変化させる部品のことです。

つまみのような場所を左右や上下に移動させることで値を変化させることができます。

音量や画面の明るさのような値を調整する際の入力欄として操作しやすい部品です。

 

[PR] フロントエンドで挫折しない学習方法を動画で公開中

スライダーバーを実装する方法

シンプルにスライダーバーを実装するのであれば、HTMLのinputタグのtypeをrangeとすることが簡単です。

その場合は、下記のようなHTMLソースを記述するだけでスライダーバーが実装できます。

これに目盛りをつけたり、値を10ずつ変化するようにしたり、CSSで装飾もできます。

min:スライダーバーの最小値を指定します。

max:スライダーバーの最大値を指定します。

step:スライダーバーの1目盛りを指定します。

<input type="range" id="inputSlideBar" min="0" max="100" step="10">

 

またJavaScriptでは、以下のようにslideBarの値を取得できます。
今回はchangeイベントでスライダーバーの変更を検知して値を取得しています。

const inputSlideBarElement = document.getElementById('inputSlideBar');

inputSlideBarElement.addEventListener('change', function(){
	console.log(inputSlideBarElement.value);//(例)console => 90
});

inputタグですので、値は.valueで取得できます。
またvalueに値を0と設定することで、スライダーバーを左端に設定できます。

複数の値を1つのスライダーバーで操作したいような場合などは、標準のinputタグでは対応できません。

複数の値を扱えるスライダーバーを個人で実装もできますが、今回はライブラリを使って実装してみましょう。

 

実際に書いてみよう

HTMLのinputタグを使う方法は上で紹介した通りです。

ここでは、JavaScriptのライブラリを使って実装する流れと方法を紹介します。

 

1.ライブラリを探す

欲しい機能名やライブラリというキーワードで検索しても良いです。

今回はJavaScriptのライブラリを探すのに便利なサイトのSearchLibsで、スライダーバーのライブラリを探します。

検索キーワードはsliderだけだと画像をスライド表示するライブラリも出てくるので、sliderにスライダーバーを表すrangeという単語を追加します。

検索結果から一番スターの多い「nouislider」というライブラリを使うことにします。

 

2.ライブラリを読み込む

ライブラリをダウンロードして読み込むことも可能ですが、今回はJavaScriptのライブラリなどを配信しているCDN(Content Delivery Network)のcdnjsから、「nouislider」を検索して配信しているURLを使って読み込みます。

使用するCSSとJSファイルの2つを下記のようなURLで読み込んでください。
また、スライダーバーの値を取得する処理でjQueryも使いますので一緒に読み込みましょう。

<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/noUiSlider/14.7.0/nouislider.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/noUiSlider/14.7.0/nouislider.min.js"></script>
<script src="https://code.jquery.com/jquery-3.6.0.slim.js"  crossorigin="anonymous"></script>

 

3.ライブラリの実装をする

ライブラリのドキュメントを読み、実装方法を確認します。

まずはHTMLでスライダーバーを用意するためのタグを用意します。

JavaScriptで取得しやすいように、idにsliderという名前をつけています。

<div id="slider"></div>

 

次にJavaScriptの記述です。

noUiSliderのcreateメソッドに必要な値を渡します。
第1引数に、スライダーバーを表示するためのHTMLを取得して渡します。
第2引数に、{(波カッコ)で囲ったオブジェクトの形で、必須のstartとrangeを指定します。
startは操作するハンドルの数と初期位置を指定するためのものです。

今回はハンドルを2つにし、20の位置と80の位置にします。
rangeはオブジェクトの形で最小値であるminと、最大値であるmaxを指定します。

let slider = document.getElementById('slider');

noUiSlider.create(slider, {
  start: [20, 80],      //スライダーバーの初期位置を指定
  range: {
    'min': 0,           //スライダーバーの最小値
    'max': 100          //スライダーバーの最大値
  }
});

 

これで下記のようなハンドルが2つあるスライダーバーができました。

 

また、JavaScriptから現在のスライダーバーの値を取得できます。

let objSlide1 = $('.noUi-handle')[0];
let objSlide2 = $('.noUi-handle')[1];
const minValue = objSlide1.getAttribute('aria-valuenow');
const maxValue = objSlide2.getAttribute('aria-valuenow');
console.log(`最小値は${minValue}最大値は${maxValue}`);
    //console => 最小値は20.0最大値は80.0

 

noUiSliderのライブラリでは、対象のdiv要素に以下のようなdivを複数作成しスライダーバーを表示しています。

そのため、値を取得する際にnoUi-handleというクラスを持っているdiv要素(赤枠)のattribute属性のaria-valuenow(青枠)の値を取得すれば、現在のスライダーバーの値を取得できます。

 

まとめ

HTMLで簡単にスライダーバーを実装する方法と、JavaScriptのライブラリを使ったスライダーバーの実装方法を紹介しました。

すべて自作するのも勉強のためには良いですが、素早くやりたいことを実現する方法として、すでにあるライブラリを利用する流れを知っておくのもおすすめです。

スライダーバーで2つの値を保持できれば、検索条件などの金額の下限や上限などUIの幅が広がりますのでぜひ参考にしてくださいね。

 

執筆してくれたメンター

永井 浩平(ながい こうへい)

バックエンド、フロント、クラウドなど幅広い業務を行ってきました。

DB全般とspring(Java)、フロント系言語が得意分野です。

現在はBtoBtoC事業を行っている会社で社内SEとして勤務している傍
テックアカデミーのフロントエンドコース・Javaコースのメンターとして活動しています。

 

大石ゆかり

内容が分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

 

JavaScriptを学習中の方へ

これで解説は終了です、お疲れさまでした。

  • つまずかず「効率的に」学びたい
  • 副業や転職後の「現場で使える」知識やスキルを身につけたい

プログラミングを学習していて、このように思ったことはありませんか?

テックアカデミーのフロントエンドコースでは、第一線で活躍する「プロのエンジニア」が教えているので、効率的に実践的なスキルを完全オンラインでしっかり習得できます。

合格率10%の選考を通過した、選ばれたエンジニアの手厚いサポートを受けながら、JavaScript・jQueryを使ったWebサービス開発を学べます。

まずは一度、無料体験で学習の悩みや今後のキャリアについて話してみて、「現役エンジニアから教わること」を実感してみてください。

時間がない方、深く知ってから体験してみたい方は、今スグ見られる説明動画から先に視聴することをおすすめします!