【JS&CSS】タスクの進捗状況を示すプログレスバーの実装方法

本記事では、以下のようなプログレスバーを作る方法を紹介します。

不定型プログレスバー(indeterminate)

決定型プログレスバー(determinate)

不定型プログレスバー(indeterminate)

バーが進んでいるように見えるが、具体的な進捗は示さないタイプ。
主にローディングアイコンとして使われ、ユーザーに何かが進行中であることを視覚的に伝えられます。

決定型プログレスバー(determinate)

進行状況が視覚的に分かるタイプ。
上の例では、タスクの完了数(チェックの数)に応じてバーの進み具合が変わります。

目次

プログレスバーの実装コード(HTML / CSS / JavaScript)

本実装では、不定型はHTMLとCSSのみを使用し、決定型はHTMLとCSSに加えてJavaScriptも使用します。

不定型プログレスバー(indeterminate)

@keyframesで指定したアニメーション(プログレスバーが左側から中央に移動し、右側へ流れる)を繰り返します。バーの位置はpositionプロパティで外枠内に収まるようにし、外枠からはみ出た部分はoverflow: hidden;で見えないようにします。

<div class="indeterminate-bar-container">
  <div class="indeterminate-bar"></div>
</div>

決定型プログレスバー(determinate)

チェックボックスをクリックしたとき、チェックされている数に応じてプログレスバーの幅サイズを変化させます。また、CSSでtransitionプロパティを設定しておくことで幅の変化が緩やかになり、プログレスバーが滑らかに動いているように見せられます。

<div class="progress-bar-container">
  <div class="progress-bar" id="progress-bar"></div>
</div>
<div class="progress-options">
  <label>
    <input type="checkbox" class="progress-check"> Task 1
  </label>
  <label>
    <input type="checkbox" class="progress-check"> Task 2
  </label>
  <label>
    <input type="checkbox" class="progress-check"> Task 3
  </label>
</div>
updateProgress関数
  1. すべてのチェックボックスの数と、チェックされているチェックボックスの数を計算します。
  2. その割合に基づいて、プログレスバーの幅をstyle.widthで変更します。
    (チェックボックスが3つ中2つ選択されていれば、幅は (2/3) * 100 = 66.67% になります。)

この実装ではチェックボックスは3つですが、チェックボックスの数に応じて動作するため、数が増減しても動作します。


当サイトで公開しているWebデザインやUIの実装例は、一覧として以下記事に纏めています。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次