質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

スクロール

スクロールとは、ディスプレイスクリーン上において連続的にコンテンツが滑っていくことを指します。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

1回答

1239閲覧

スクロールで動くプログレスバーの挙動がおかしい

ukyomas

総合スコア6

CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

スクロール

スクロールとは、ディスプレイスクリーン上において連続的にコンテンツが滑っていくことを指します。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2020/09/25 06:29

前提・実現したいこと

スクロールで動くプログレスバーをjQueryで実装しています。
エラーも出ておらず、とりあえず動いてはいるのですがどうも挙動がおかしいです。

最終的には、

画面表示時の一番上にいるときはプログレスバー100% → スクロールし始めたら0からスタート → スクロールに合わせてプログレスバーも一緒に動く → スクロール終了するとプログレスバーが100%になる。

といった感じにしたいです。

発生している問題・エラーメッセージ

コンソールエラーは現在発生していません。

発生している問題はスクロールの最後の方になると、プログレスバーはまだ80%くらいなのに画面の下に到達してしまいます。下に到達すると100%になるようになっているので、80%〜100%に一気にぱっと進んでしまいます。

該当のソースコード

HTML

1<progress id="js-progress-bar" class="progress-bar" max="100" value="100"></progress>

CSS

1.progress-bar { 2 position: fixed; 3 transform: rotate(90deg); 4 top: 28vw; 5 left: -7vw; 6 width: 25%; 7 height: 1px; 8 z-index: 1; 9 -webkit-appearance: none; 10 -moz-appearance: none; 11 border: none; 12 background-color: #eee; 13 } 14 15 .progress-bar::-webkit-progress-bar { 16 background-color: #eee; 17 } 18 19 .progress-bar::-moz-progress-bar { 20 background-color: #111; 21 } 22 23 .progress-bar::-webkit-progress-value { 24 background-color: #111; 25 } 26

JS

1jQuery(function () { 2 jQuery(window).on("scroll", function () { 3 body = jQuery("body"); 4 5 if (body) { 6 win = jQuery(window); 7 windowHeight = win.height(); 8 scrollTop = win.scrollTop(); 9 scrollbottom = scrollTop + windowHeight; 10 11 bodyHeight = body.outerHeight(); 12 bodyTop = body.offset().top; 13 bodyBottom = bodyTop + bodyHeight; 14 15 progressTop = scrollTop; 16 progressBottom = scrollbottom; 17 18 progress = (progressTop / progressBottom) * 100; 19 20 progressBar = jQuery("#js-progress-bar"); 21 22 if (scrollbottom > windowHeight && scrollbottom < bodyBottom) { 23 progressBar.attr("value", progress); 24 } else { 25 progressBar.attr("value", 100); 26 } 27 } 28 }); 29});

試したこと

・現在bodyにかけているのですが、mainにしてみたりしても同じでした。
・非同期のプラグインでblotter.jsというのを使ってるのですが、それをOFFにしてみましたがだめでした。
・今はプログレスバーは縦になっているのですが、横にしても同様で挙動がおかしかったです。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

こんな感じですかね

投稿2020/09/25 07:54

yambejp

総合スコア116724

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ukyomas

2020/09/25 13:15

回答ありがとうございます!! ご丁寧にコードまで...助かりました。。。T_T 今実際に実装してみたら正常に動きました!こんなに短いコードで実装できるんですね。 知らなかったです。コード見て勉強させてもらいます。 本当にありがとうございました!!!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問