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

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

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

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

1回答

618閲覧

上スクロールでナビが表示(下スクロール時は非表示)。トップから指定位置で非表示

kapparappa

総合スコア1

jQuery

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2020/08/12 02:57

編集2020/08/12 06:51

前提・実現したい動作

※前提
上部グローバルナビは別デザインの為、グローバルナビとフローティング用のナビが2つ存在している状態。
グローバルナビは固定。

⑴上スクロールでフローティングナビが表示(下スクロール時は非表示)
⑵トップから300px位置でフローティングナビを非表示にする。

現在⑴は下記のコードで動作しているんですが、
ここに⑵の動作を追加する場合、どのような記述にしたらいいでしょうか?

現在のソースコード

sc_func(); function sc_func(){ var posBf = $(window).scrollTop(); $(window).scroll(function(){ var posAf = $(this).scrollTop(); if( posAf < posBf){ $('.fixed_nav').removeClass('js_hide'); $('.fixed_nav').addClass('js_hide2'); }else{ $('.fixed_nav').addClass('js_hide'); $('.fixed_nav').removeClass('js_hide2'); } posBf = posAf; }); }

HTML

<div class="fixed_nav"> <ul> <li><a href="#">メニュー1</a></li> <li><a href="#">メニュー2</a> </ul> </div>

CSS

.fixed_nav { position: fixed !important; width: 100%; -webkit-transition: all 0.5s; transition: all 0.5s; z-index: 999; top:0px; } .fixed_nav.js_hide { transform: translateY(-100%); } .fixed_nav.js_hide2 { transform: translateY(0); }

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

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

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

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

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

guest

回答1

0

ベストアンサー

ご希望のことは、
下スクロールかつ scrollTop が 300px以上のとき非表示、
上スクロールの場合は表示する
ということですか。

現状は下スクロールですぐ消えて、上スクロールですぐ表示される状態でしょうか。

上記の解釈であっているとするなら、たぶん下記でいいかと。
(HTML、CSSが提示されていないので確認はとれてません。うまくいかない場合は、考え方を参考にして修正してください。)

js

1sc_func(); 2 function sc_func(){ 3 4 var posBf = $(window).scrollTop(); 5 6 $(window).scroll(function(){ 7 var posAf = $(this).scrollTop(); 8 9 if( posAf < posBf){ 10 $('.fixed_nav').removeClass('js_hide'); 11 $('.fixed_nav').addClass('js_hide2'); 12 }else{ 13 if(posAf >= 300){ 14 $('.fixed_nav').addClass('js_hide'); 15 $('.fixed_nav').removeClass('js_hide2'); 16 } 17 } 18 posBf = posAf; 19 }); 20 }

下スクロールの場合の非表示、上スクロールの場合は表示。
トップ0から300pxの位置では常に非表示。

いいえると、

トップ0から300px または 下スクロールの時、非表示。
それ以外は表示。

ですので、それを条件にすればいいでしょう。

js

1sc_func(); 2function sc_func() { 3 4 var posBf = $(window).scrollTop(); 5 6 $(window).scroll(function () { 7 var posAf = $(this).scrollTop(); 8 9 if (posAf > posBf || posAf < 300 ) { 10 $('.fixed_nav').addClass('js_hide'); 11 $('.fixed_nav').removeClass('js_hide2'); 12 } else { 13 $('.fixed_nav').removeClass('js_hide'); 14 $('.fixed_nav').addClass('js_hide2'); 15 } 16 posBf = posAf; 17 }); 18}

投稿2020/08/12 05:53

編集2020/08/12 07:18
hatena19

総合スコア33715

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

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

kapparappa

2020/08/12 06:11

ご回答ありがとうございます! HTML, CSS追記させていただきました。 ------- 下スクロールの場合の非表示 、上スクロールの場合は表示。 トップ0から300pxの位置では非表示。 上記のような状態にしたいと思っております。 教えていただいたコードだと0から300pxの位置では非表示の状態にはできないようでした。
hatena19

2020/08/12 06:43

あとから閲覧する人のために、コードは回答の方に追記してもらった方がいいですね。 コメント欄までは見ない人が多いので。
kapparappa

2020/08/12 08:45 編集

評価後にすみません、上に戻った際には0~300pxで非表示になるのですが、ページ読み込み時に上に表示されたままになり、固定のグローバルナビと被ってしまいます。ページ読み込み時にも非表示にさせることは可能でしょうか?
hatena19

2020/08/12 09:44

HTMLに js_hide クラスを付加しておけばいいでしょう。 <div class="fixed_nav js_hide">
kapparappa

2020/08/12 10:27

再度ご回答ありがとうございます。 なるほど、、解決致しました。 ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問