
こんばんは。
表題の件、教えて欲しいです。
電子教材を作っているのですが、進捗がわかるプログレスバーを現在作っているサイトに組み込みたいです。具体的には、ページ内に「理解できた」ボタンを5つ作成し、一つ目の「理解できた」ボタンが押されるとページ上部に作られたプログレスバーの進捗が20%まで、2つ目が押されると40%まで、、、、、5つ押されると100%まで進捗するというバーを作りたいです。
簡単にHTML・CSS・JSのコードを教えていただけないでしょうか。もしくは参考になるサイトがあればご紹介いただけないでしょうか。
よろしくお願い致します。
No.3ベストアンサー
- 回答日時:
こんにちは
>簡単にHTML・CSS・JSのコードを教えていただけないでしょうか。
すでに紹介がありますが、プログレスバーを実現するjsライブラリは数多くありますので、検索して、お好みのものを利用するのが簡単だと思います。
一方で、表示がブラウザ依存になることをかまわなければ、<input type="range">がスライダー状の表示になることを利用することで、ライブラリ等を利用せずとも簡単に似たような表示ができます。
以下は、そのような一例ですが、ご参考までに。
※ <input type="range">は入力用なのでユーザが変更できますが、disabledにすると表示がグレーアウトしてしまうので、上からカバーをすることで変更できないようにしてあります。
※ 体裁を整えるために、直接関係のない処理も加えていますが、最低限では、input要素のvalue値を設定すれば表示にその値が反映されますので、他の部分はご参考まで。
※ ボタンは、順序通りでないと押せないのか、ランダムに押しても良いのか不明でしたので、特に制御は行っていません。
<!DOCTYPE HTML>
<html lang="ja">
<head><title>Sample</title>
<style>
#progress { width: 18em; }
#progress p { margin: 0.5em 1em; padding: 0; }
#progress p button { width:8em; margin-left: 2em; }
#progress .slid_wrap { margin: 1em 0 1em 1em; position: relative; }
#progress .slid_wrap input { width: 11em; }
#progress .slid_wrap span { font-size: .8em; font-weight: bold; }
#progress .slid_wrap .cover {
position: absolute; top: 0; left: 0;
width: 100%; height: 100%;
}
</style>
<script>
window.addEventListener('DOMContentLoaded', ()=>{
let p = document.getElementById('progress');
p.querySelector('fieldset').addEventListener('click', (e)=>{
let t = e.target;
if(e.target.nodeName != 'BUTTON') return;
t.value = 'done', t.textContent = '終了済';
t.disabled = 'disabled';
let n = p.querySelectorAll('button[value="done"]').length * 20;
p.querySelector('.slid_wrap input').value = n;
p.querySelector('.slid_wrap span').textContent = n + "%";
});
});
</script>
</head>
<body>
<div id="progress">
<div class="slid_wrap">
<label>理解度:</label>
<input type="range" min="0" max="100" value="0" />
<span>0%</span>
<div class="cover"></div>
</div>
<fieldset>
<legend>理解状況チェック</legend>
<p>第1章:<button type="button">理解できた</button></p>
<p>第2章:<button type="button">理解できた</button></p>
<p>第3章:<button type="button">理解できた</button></p>
<p>第4章:<button type="button">理解できた</button></p>
<p>第5章:<button type="button">理解できた</button></p>
</fieldset>
</div>
</body>
</html>
ありがとうございます!本当にこのようなものが作りたかったのでドンピシャです。大変助かりました。
よろしければもう一点教えて欲しいのですが、「'終了済'」ボタンを押すと「理解できた」ボタンに再び戻り、かつプログレスバーの進捗も戻るようにするにはどのようなコードを追加すれば良いでしょうか。
よろしくお願い致します。
No.4
- 回答日時:
No3です。
>「'終了済'」ボタンを押すと~~コードを追加すれば良いでしょうか。
追加というよりも、一部修正することで可能です。
修正部分だけを記述しても伝わらない可能性がありそうなので、修正後のスクリプト全体を参考までに以下に記しておきます。
とは言え、No3はあくまでも要領としての例ですので(汎用的なものではない)、質問者様の環境に合わせた調整ができないと、実装できないのではないかと懸念しますけれど・・・
window.addEventListener('DOMContentLoaded', ()=>{
let p = document.getElementById('progress');
p.querySelector('fieldset').addEventListener('click', (e)=>{
let n, t = e.target;
if(e.target.nodeName != 'BUTTON') return;
t.textContent = t.value?'理解できた':'終了済';
t.value = t.value?'':'done';
n = p.querySelectorAll('button[value="done"]').length * 20;
p.querySelector('.slid_wrap input').value = n;
p.querySelector('.slid_wrap span').textContent = n + '%';
});
});
早速ありがとうございます。やってみたところ問題なく実装できているように見えます!!間違いなくベストアンサーです。
最後に差し支えなければ、「終了済」ボタンの色などを変え、終わった感じを出したいのですが、これは難しいでしょうか?
No.1
- 回答日時:
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Web・クリエイティブ 独学でwebデザイナーを目指すには 2 2022/09/17 16:27
- JavaScript jsで診断コンテンツのページ内切り替えについて 1 2023/04/14 17:31
- その他(プログラミング・Web制作) WEBアプリ開発に必要な言語 5 2023/06/28 16:57
- アプリ Edgeを操作するアプリについて 4 2023/05/11 22:48
- 据え置き型ゲーム機 PS4コントローラのリセット確認方法 1 2022/10/01 10:57
- JavaScript スマフォではボタンを表示させたくない 2 2023/01/20 14:26
- ホームページ作成・プログラミング ホームページ作成について。「ワードプレスではありません」。 3 2023/08/13 14:44
- MySQL 「utf8mb4_general_ci」はMAMPでは何に当たりますか? 1 2022/06/02 07:45
- HTML・CSS Dreamweaver のテンプレートでの相対パスの設定について 2 2023/06/13 17:28
- JavaScript プルダウンから1個選んで、豆知識を出すプログラム。 2 2022/06/21 17:27
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
-
大麻の使用罪がなかった理由や法改正での変更点、他国との違いを弁護士が解説
ドイツで2024年4月に大麻が合法化され、その2ヶ月後にサッカーEURO2024が行われた。その際、ドイツ警察は大会運営における治安維持の一つの方針として「アルコールを飲んでいるグループと、大麻を吸っているグループ...
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
CSS のみのタブ切り替えについて
-
【html5】canvasでの文字の形の...
-
ホームページのsidebar とconte...
-
SeesaaブログにBlogPeople (...
-
チェックボックスの背景色って...
-
https://でのレイアウト崩れを...
-
MAX関数を使ってからLEFT JOIN...
-
マウスに画像がついてくる
-
スライドショーにコメントを入...
-
1枚の画像をクリックすると複数...
-
吹き出しに画像とコメントを入...
-
removeEventListenerについて
-
画像が表示でnull; this.src
-
背景色を透明化
-
インラインフレームでのクッキ...
-
jQueryでクリックされた要素のi...
-
onmouseoverで複数の要素のstyl...
-
eclipseでcssを使うためには?
-
NTML-Javascriptでのデータ受け...
-
イメージをあらかじめ読み込む...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
スタイルシートで画面を上下に...
-
【CSS】floatで左右に並べた...
-
チェックボックスの背景色って...
-
CSS <div>の入れ子が反映さ...
-
HTMLですCSSです 画像のように...
-
CSSで背景を下までのばすには?
-
CSS のみのタブ切り替えについて
-
離れた場所にマウスオーバーで...
-
スクロール可能なチェックボックス
-
htmlのstyleのposition:relativ...
-
文字をクリックしたら別の文字...
-
スタイルシート(CSS)で、高さ...
-
行間
-
Ctrl+F(検索)の窓を出したいの...
-
CSSでフローとした際の親要素の...
-
CSSで(3)段組のページを作り...
-
html スクロール要素を下から表...
-
IE6のレイアウト崩れ
-
CSSでdivのheightを動的に
-
フッター上部に謎の隙間
おすすめ情報