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

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

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

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

jQuery

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

HTML

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

Q&A

解決済

1回答

1239閲覧

【jquery】トップへスクロールで戻る際に吸着ナビゲーションが点滅してしまう。

zak

総合スコア35

JavaScript

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

jQuery

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

HTML

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

0グッド

0クリップ

投稿2018/02/27 15:07

前提・実現したいこと

■使用
・300px以上スクロールすると吸着ナビゲーションが表示される。(アニメーションでフェードイン)
・一番下の「トップへ」のリンクをクリックするとトップへスクロースして戻る。

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

上記の使用のページを作ったのですが、「トップへ」のリンクを押すと
一番上に戻った時に一瞬吸着ナビゲーションが表示されてしまいます。

該当のソースコード

html

1<!DOCTYPE html> 2<html lang="ja"> 3 4<head> 5 <meta charset="UTF-8"> 6 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 7 <meta http-equiv="X-UA-Compatible" content="ie=edge"> 8 <title>Document</title> 9 10 <script src="https://code.jquery.com/jquery-2.1.3.min.js"></script> 11 12 <style media="screen"> 13 nav { 14 position: fixed; 15 top: 0; 16 z-index: 100; 17 width: 100%; 18 } 19 20 nav ul { 21 width: 100%; 22 display: table; 23 background: #000; 24 } 25 26 nav ul li { 27 width: 25%; 28 display: table-cell; 29 text-align: center; 30 } 31 32 nav ul li a { 33 color: #fff; 34 display: block; 35 padding: 10px 0; 36 } 37 38 nav ul li a:hover { 39 color: #da9e9e; 40 } 41 42 #hogehoge { 43 margin-top: 100px; 44 } 45 46 #hogehoge p { 47 padding: 100px 0; 48 } 49 </style> 50 51</head> 52 53<body> 54 55 <nav> 56 <ul> 57 <li><a href="#">ほーむ</a></li> 58 <li><a href="#">そこ</a></li> 59 <li><a href="#">こっち</a></li> 60 <li><a href="#">あっち</a></li> 61 </ul> 62 </nav> 63 64 <div id="hogehoge"> 65 <p>テストテスト</p> 66 <p>テストテスト</p> 67 <p>テストテスト</p> 68 <p>テストテスト</p> 69 <p>テストテスト</p> 70 <p>テストテスト</p> 71 <p>テストテスト</p> 72 <p>テストテスト</p> 73 <p>テストテスト</p> 74 <p>テストテスト</p> 75 <p>テストテスト</p> 76 <p>テストテスト</p> 77 <p><a href="#" class="goTop">トップへ</a></p> 78 </div> 79 80 <script type="text/javascript"> 81 jQuery(function($) { 82 $(window).scroll(function() { 83 if ($(window).scrollTop() > 300) { 84 $('nav').fadeIn('nomale'); 85 } else { 86 $('nav').fadeOut('nomale'); 87 } 88 }); 89 $('.goTop').click( 90 function() { 91 $('html,body').animate({ 92 scrollTop: 0 93 }, 'nomale'); 94 } 95 ); 96 }); 97 </script> 98 99</body> 100 101</html>

調べ方が悪いのか、解決方法を見つけることができませんでした。
ご存知の方いらっしゃいましたらご教授願います。

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

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

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

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

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

guest

回答1

0

ベストアンサー

フェードインとフェードアウトが重なって何度も実行されてしまうので、
キューを削除する処理が必要です。

あと、ハッシュが付かないように、e.preventDefault()とreturn falseもつけておいたほうがいいです。

javascript

1 $(window).scroll(function() { 2 if ($(window).scrollTop() > 300) { 3 $('nav').stop(false, false).fadeIn('nomale'); 4 } else { 5 $('nav').stop(false, false).fadeOut('nomale'); 6 } 7 }); 8 $('.goTop').click(function(e) { 9 e.preventDefault(); 10 11 $('html,body').animate({ 12 scrollTop: 0 13 }, 'normal'); 14 15 return false; 16 }); 17

それと、直接的な原因ではないと思いますが、normalの綴りが違っていました…。

投稿2018/02/27 15:23

編集2018/02/27 15:30
kszk311

総合スコア3404

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

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

zak

2018/02/27 16:01

ご回答ありがとうございます。 stopメソッドというものがあるのですね。勉強になりました! >あと、ハッシュが付かないように、e.preventDefault()とreturn falseもつけておいたほうがいいです。 質問以外のところでもご指摘ありがとうございます。 preventDefault()でリンクを無効化して return false;でパブリングを無効化しているのですね。 いつも動けばいいやでコーディングしてしまっているので、 非常に勉強になります。 ありがとうございます! >それと、直接的な原因ではないと思いますが、normalの綴りが違っていました…。 まったく気づいておりませんでした。。。 ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問