読み込み中...

CSSでプログレスバーを作成!初心者向け3つの方法で徹底解説

CSSプログレスバー作成例 CSS
この記事は約19分で読めます。

【サイト内のコードはご自由に個人利用・商用利用いただけます】

この記事では、プログラムの基礎知識を前提に話を進めています。

説明のためのコードや、サンプルコードもありますので、もちろん初心者でも理解できるように表現してあります。

本記事のサンプルコードを活用して機能追加、目的を達成できるように作ってありますので、是非ご活用ください。

※この記事は、一般的にプロフェッショナルの指標とされる『実務経験10,000時間以上』を満たす現役のプログラマチームによって監修されています。

※Japanシーモアは、常に解説内容のわかりやすさや記事の品質に注力しております。不具合、分かりにくい説明や不適切な表現、動かないコードなど気になることがございましたら、記事の品質向上の為にお問い合わせフォームにてご共有いただけますと幸いです。
(送信された情報は、プライバシーポリシーのもと、厳正に取扱い、処分させていただきます。)

はじめに

CSSでプログレスバーを作成する方法は、Webデザインの基本的なスキルの一つです。

この記事では、初心者でも簡単に実装できる3つの異なるプログレスバーの作り方を紹介します。

これらの方法をマスターすることで、あなたのウェブサイトやアプリケーションに視覚的に魅力的な進捗表示を追加することができます。

まずは基本的なプログレスバーの作成方法から見ていきましょう。

●基本的なプログレスバーの作成

基本的なプログレスバーは、CSSのみを使用して簡単に作成できます。

HTMLには進捗状況を示すためのバーを表すdiv要素を2つ用意します。

一つはプログレスバー全体を表す外側のコンテナで、もう一つは進捗を表す内側のバーです。

CSSでは、外側のコンテナに幅、高さ、背景色を設定し、内側のバーには進捗に応じた幅と色を設定します。

例えば、下記のようなHTMLとCSSコードで基本的なプログレスバーを作成できます。

<!DOCTYPE html>
<html>
<head>
<style>
  .progress-bar {
    width: 100%;
    height: 30px;
    background-color: #f3f3f3;
    position: relative;
  }

  .progress-bar-inner {
    position: absolute;
    height: 100%;
    background-color: #4CAF50;
  }
</style>
</head>
<body>

<div class="progress-bar">
  <div class="progress-bar-inner" style="width:50%;"></div>
</div>

</body>
</html>

このコードでは、.progress-barが外側のコンテナを、.progress-bar-innerが内側の進捗バーを表しています。

進捗バーの幅を変更することで、進捗率を視覚的に表示できます。例では、進捗率が50%であることを示しています。

○プログレスバーのカスタマイズ方法

基本的なプログレスバーを作成した後、さまざまなカスタマイズを加えることができます。

例えば、色や高さを変更して、特定のデザインに合わせたり、角を丸くしたりすることが可能です。

また、CSSの:hover擬似クラスを使用して、ユーザーがプログレスバーにマウスを合わせたときに特別なエフェクトを追加することもできます。

例として、下記のようなカスタマイズを加えたプログレスバーのコードをみてみましょう。

<!DOCTYPE html>
<html>
<head>
<style>
  .progress-bar {
    width: 100%;
    height: 30px;
    background-color: #e0e0e0;
    border-radius: 15px;
    position: relative;
  }

  .progress-bar-inner {
    position: absolute;


    height: 100%;
    background-color: #4CAF50;
    border-radius: 15px;
  }

  .progress-bar:hover {
    background-color: #c8c8c8;
  }
</style>
</head>
<body>

<div class="progress-bar">
  <div class="progress-bar-inner" style="width:60%;"></div>
</div>

</body>
</html>

このコードでは、プログレスバーに角丸のデザインを適用し、マウスホバー時に背景色が変わるようにしています。

●アニメーション付きプログレスバーの作成

アニメーションを取り入れたプログレスバーは、ユーザーの注意を引く効果的な方法です。

このタイプのプログレスバーは、動的なウェブサイトやアプリケーションにおいて視覚的な魅力を加えます。

CSSのアニメーション機能を使用して、プログレスバーに滑らかな動きを追加することができます。

例えば、プログレスバーが徐々に満たされるようなアニメーションや、ループするアニメーションなどが考えられます。

ここでは、CSSの@keyframesルールとanimationプロパティを使って、基本的なアニメーション付きプログレスバーを作成する方法を紹介します。

○アニメーション効果を持つプログレスバー

アニメーション付きプログレスバーを作成するためには、まず@keyframesルールを定義して、アニメーションの各段階でのスタイルを指定します。

次に、プログレスバーにアニメーション効果を適用するためにanimationプロパティを使用します。

<!DOCTYPE html>
<html>
<head>
<style>
  .progress-bar {
    width: 100%;
    height: 30px;
    background-color: #f3f3f3;
    position: relative;
  }

  .progress-bar-inner {
    position: absolute;
    height: 100%;
    background-color: #4CAF50;
    animation: loading 2s linear infinite;
  }

  @keyframes loading {
    0% {
      width: 0;
    }
    100% {
      width: 100%;
    }
  }
</style>
</head>
<body>

<div class="progress-bar">
  <div class="progress-bar-inner"></div>
</div>

</body>
</html>

このコードでは、プログレスバーが0%から100%まで徐々に広がるアニメーションを実装しています。animationプロパティにより、このアニメーションが2秒間で無限に繰り返されます。

これにより、進行中のプロセスを示す動的な視覚表現が得られます。

○アニメーションプログレスバーの応用例

アニメーション付きプログレスバーは、さまざまな応用が可能です。

例えば、アニメーションの速度を変えたり、異なる色や形状を使用したりすることで、より目を引くデザインを実現できます。

また、JavaScriptを使用して、プログレスバーの進捗状況を動的に制御することもできます。

これにより、実際のデータやプロセスの進行に応じてプログレスバーを更新することが可能になります。

アニメーション付きプログレスバーの応用例として、サンプルコードを紹介します。

<!DOCTYPE html>
<html>
<head>
<style>
  .progress-bar {
    width: 100%;
    height: 30px;
    background-color: #f3f3f3;
    position: relative;
    overflow: hidden;
  }

  .progress-bar-inner {
    position: absolute;
    height: 100%;
    background-color: #4CAF50;
    animation: loading 5s ease-in-out forwards;
  }

  @keyframes loading {
    0% {
      width: 0;
    }
    50% {
      width: 50%;
    }


 100% {
      width: 100%;
    }
  }
</style>
</head>
<body>

<div class="progress-bar">
  <div class="progress-bar-inner"></div>
</div>

<script>
  document.querySelector('.progress-bar-inner').style.animationDuration = '10s';
</script>

</body>
</html>

このコードでは、プログレスバーのアニメーションが5秒間で50%まで達し、その後100%まで広がるように設定されています。

また、JavaScriptを用いてアニメーションの持続時間を10秒に変更しています。

このように、CSSとJavaScriptの組み合わせにより、より複雑で洗練されたアニメーション効果をプログレスバーに追加することができます。

●テキスト表示機能付きプログレスバー

ウェブデザインにおいて、進捗を数字やテキストで表示する機能は非常に役立ちます。

特に、ユーザーが現在の進行状況を一目で理解できるようにするため、プログレスバーにテキストを組み込むことは有効です。

CSSを使用して、プログレスバーの中に進捗率を示すテキストを表示させる方法を紹介します。

これにより、プログレスバーの機能性と視覚的な魅力が向上します。

○テキスト表示を組み込んだプログレスバー

テキスト表示機能付きのプログレスバーを作成するには、進捗バーの内側にテキストを配置し、CSSで適切にスタイリングします。

<!DOCTYPE html>
<html>
<head>
<style>
  .progress-bar {
    width: 100%;
    height: 30px;
    background-color: #f3f3f3;
    position: relative;
    font-family: Arial, sans-serif;
    font-size: 16px;
    text-align: center;
    line-height: 30px; /* 高さと同じに設定して中央揃え */
    color: #000;
  }

  .progress-bar-inner {
    position: absolute;
    height: 100%;
    background-color: #4CAF50;
    z-index: -1; /* テキストを前面に表示 */
  }
</style>
</head>
<body>

<div class="progress-bar">
  <div class="progress-bar-inner" style="width:70%;"></div>
  70%
</div>

</body>
</html>

このコードでは、プログレスバーの内側に進捗率を示すテキスト(ここでは「70%」)を直接配置しています。

z-indexプロパティを使用してテキストが前面に表示されるように調整しています。

これにより、ユーザーは一目で進捗状況を確認できます。

○テキスト表示プログレスバーの応用例

テキスト表示機能付きプログレスバーは、様々な応用が可能です。

例えば、JavaScriptを使って進捗状況に応じてテキストを動的に更新することができます。

また、テキストの色やフォント、位置をカスタマイズすることで、デザインの多様性を実現できます。

応用例として、JavaScriptを使用して進捗状況を動的に更新するサンプルコードを紹介します。

<!DOCTYPE html>
<html>
<head>
<style>
  .progress-bar {
    width: 100%;
    height: 30px;
    background-color: #f3f3f3;
    position: relative;
    font-family: Arial, sans-serif;
    font-size: 16px;
    text-align: center;
    line-height: 30px;
    color: #000;
  }

  .progress-bar-inner {
    position: absolute;
    height: 100%;
    background-color: #4CAF50;
    z-index: -1;
  }
</style>
<script>
  function updateProgressBar(progress) {
    document.querySelector('.progress-bar-inner').style.width = progress + '%';
    document.querySelector('.progress-bar').textContent = progress + '%';
  }

  // 例として、5秒間でプログレスバーを100%まで更新
  let progress = 0;
  let interval = setInterval(() => {
    if (progress >= 100) clearInterval(interval);
    updateProgressBar(progress++);
  }, 50);
</script>
</head>
<body>

<div class="progress-bar">
  <div class="progress-bar-inner"></div>
</div>

</body>
</html>

このコードでは、JavaScriptを使用して進捗状況を定期的に更新し、それに応じてプログレスバーの幅とテキストを変更しています。

このように動的な要素を取り入れることで、プログレスバーはさらに機能的で魅力的なものになります。

●CSSプログレスバーの応用デザイン

CSSを使用したプログレスバーのデザインは、基本的なものから高度にカスタマイズされたものまで様々です。

ここでは、一般的な水平型プログレスバーから一歩進んで、縦型や円形、さらには複数項目を表示するプログレスバーのデザイン方法について詳細に説明します。

これらの応用デザインは、ウェブサイトやアプリケーションにおいて、よりダイナミックで視覚的に魅力的な進捗表示を提供します。

○縦型プログレスバーの作り方

縦型プログレスバーは、垂直方向に進捗を表示するのに適しており、ウェブページのサイドバーなどに適用できます。

下記のサンプルコードでは、基本的な縦型プログレスバーの作成方法を表しています。

<!DOCTYPE html>
<html>
<head>
<style>
  .vertical-progress-bar {
    height: 200px; /* 縦の長さ */
    width: 30px; /* 横の幅 */
    background-color: #f3f3f3;
    position: relative;
  }

  .vertical-progress-bar-inner {
    position: absolute;
    bottom: 0; /* 下からの高さを調整 */
    width: 100%;
    background-color: #4CAF50;
  }
</style>
</head>
<body>

<div class="vertical-progress-bar">
  <div class="vertical-progress-bar-inner" style="height:50%;"></div>
</div>

</body>
</html>

このコードでは、縦型プログレスバーを作成するために、高さと幅の設定を逆にしています。

進捗率は、vertical-progress-bar-innerの高さを変更することで調整できます。

○円形プログレスバーの作り方

円形プログレスバーは、特にダッシュボードや統計表示において人気があります。

下記のサンプルコードでは、CSSのborder-radiusプロパティとtransformプロパティを使用して円形プログレスバーを作成する方法を表しています。

<!DOCTYPE html>
<html>
<head>
<style>
  .circular-progress-bar {
    width: 100px; /* 円の直径 */
    height: 100px;
    border-radius: 50%; /* 円形にする */
    background-color: #f3f3f3;
    position: relative;
  }

  .circular-progress-bar-inner {
    position: absolute;
    width: 100%;
    height: 100%;
    border-radius: 50%;
    clip-path: circle(50% at 50% 50%); /* 円形クリッピング */
    transform: rotate(-90deg); /* 回転 */
    background-color: #4CAF50;
  }
</style>
</head>
<body>

<div class="circular-progress-bar">
  <div class="circular-progress-bar-inner" style="clip-path: polygon(0 0, 100% 0%, 100% 50%, 0% 50%);"></div>
</div>

</body>
</html>

このコードでは、clip-pathプロパティを使用してプログレスバーの形を円形にクリップし、transformプロパティで内部要素を回転させています。

○複数項目を表示するプログレスバーのデザイン

複数の進捗項目を同時に表示するプログレスバーは、プロジェクトの進捗状況や複数のタスクの完了度を表すのに便利です。

下記のサンプルコードでは、複数の進捗バーを並べて表示しています。

<!DOCTYPE html>
<html>
<head>
<style>
  .multi-progress-bar {
    width: 100%;
    background-color: #f3f3f3;
    position: relative;
    margin-bottom: 10px; /* 間隔調整 */
  }

  .multi-progress-bar-inner {
    position: absolute;
    height: 30px;
    background-color: #4CAF50;
  }
</style>
</head>
<body>

<div class="multi-progress-bar">
  <div class="multi-progress-bar-inner" style="width:40%;"></div>
</div>
<div class="multi-progress-bar">
  <div class="multi-progress-bar-inner" style="width:60%;"></div>
</div>
<div class="multi-progress-bar">
  <div class="multi-progress-bar-inner" style="width:80%;"></div>
</div>

</body>
</html>

このコードでは、同じスタイルのプログレスバーを複数作成し、それぞれ異なる幅を設定しています。

これにより、各項目の進捗状況を一目で把握できます。

●注意点と対処法

CSSプログレスバーを作成する際には、いくつかの重要な注意点があります。

これらを理解し、適切に対処することで、効果的で使いやすいプログレスバーを実現できます。

まず、異なるブラウザやデバイスでプログレスバーの表示が一貫しない問題があります。

これに対処するためには、クロスブラウザの互換性を確保することが重要です。

CSSプリフィクスを適用し、標準的なCSSプロパティを使用することで、異なるブラウザ間での一貫性を保つことができます。

次に、プログレスバーの進捗を動的に更新する際の難しさです。

CSSだけでは完全な動的挙動を実現するのは難しいため、JavaScriptと連携してDOM要素を操作することをお勧めします。

さらに、異なる画面サイズに対応するためには、メディアクエリを使用してレスポンシブなデザインを実現することが重要です。

また、視覚障害を持つユーザーに対して親切な設計を心がけることも大切です。

プログレスバーの状態をテキストで表現するか、ARIA属性を適切に使用することで、アクセシビリティを向上させることができます。

最後に、パフォーマンスの問題に対しては、必要最低限のアニメーションを使用し、CSSの再描画が頻繁に起こらないように注意することが重要です。

これらの注意点を踏まえて、効果的なプログレスバーの実装を目指しましょう。

○CSSプログレスバー作成時の一般的な問題と解決策

CSSプログレスバーの作成には、いくつかの一般的な問題が伴います。これらの問題には適切な解決策が必要です。

表示の不一致に関しては、クロスブラウザ互換性を考慮し、CSSプリフィクスを適用することが有効です。

動的な更新の難しさに対しては、JavaScriptを活用してDOM要素を操作し、プログレスバーの状態を更新する方法が効果的です。

レスポンシブデザインの問題では、異なる画面サイズに応じたメディアクエリを使用して適切に調整することが重要です。

アクセシビリティの考慮不足に対処するためには、テキスト表現やARIA属性の使用を心がけます。

また、パフォーマンスの問題については、アニメーションの使用を最小限に抑え、効率的なCSSコーディングを行うことで対応します。

これらの解決策を適用することで、一般的な問題を効果的に解決し、使いやすいプログレスバーを実装できます。

まとめ

この記事では、初心者でも簡単に作れるCSSプログレスバーの作り方を三つの方法で解説しました。

基本的なプログレスバーの作成から、アニメーション効果やテキスト表示機能の付加、さらに応用デザインへの展開までをカバーしています。

各手法についてのサンプルコードと応用例を提供し、注意点と対処法も紹介しました。

これらの情報を活用して、あなたのウェブデザインにおいて効果的なプログレスバーを実装してみてください。