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

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

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

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

HTML

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

CSS

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

Q&A

解決済

2回答

403閲覧

jQueryでスティッキーヘッダー実装。

art_porokyu

総合スコア44

jQuery

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

HTML

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

CSS

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

0グッド

0クリップ

投稿2019/01/06 12:47

ウインドウをスクロールした時にjQueryでheaderをfadeinさせたいのですが、どのようにすればいいでしょうか?

###参考サイト
Olta 参考サイト

###考え方
・予めfadeinさせたいheader-cloneを用意し、そのheader-cloneを既存のheaderの上に乗せる。
・header-cloneにopadity: 0;を指定し見えないようにする。
・CSSでheader-cloneに.activeをつけ、opacity: 1;を指定する。
・スクロールした際addClassでactiveをつけfadeinさせる。

html

html

1<header id="header"> 2 <!-- hrader開始 --> 3 <div class="header-first"> 4 <div class="header-call "> 5 <!-- <img class="logo-clone" src="../images/logo.svg" alt=""> --> 6 <img class="call" src="../images/icon-tel.svg" alt=""> 7 <p>050-3205-1008</p><sapn id="time">(10:00~18:00 土日祝日除く)</span> 8 </div> 9 <div class="global-nav"> 10 <ul> 11 <li>運営会社</li> 12 <li>よくある質問</li> 13 <li>ログイン</li> 14 </ul> 15 </div> 16 </div> 17 </header> 18 <!-- header終了 --> 19 20 <!-- header-clone開始 --> 21 <div class="header-clone"> 22 <div class="header-call-clone"> 23 <img class="logo-clone" src="../images/logo.svg" alt=""> 24 <img class="call-clone" src="../images/icon-tel.svg" alt=""> 25 <p>050-3205-1008</p><sapn id="time">(10:00~18:00 土日祝日除く)</span> 26 </div> 27 28 <div class="global-nav-clone"> 29 <div class="list-4"><a href="">無料登録して申し込む</a></div> 30 <ul> 31 <li>運営会社</li> 32 <li>よくある質問</li> 33 <li>ログイン</li> 34 </ul> 35 </div> 36 </div> 37 <!-- header-clone終了 -->

###CSS

css

1.header-clone { 2 height: 90px; 3 opacity: 0; 4 background-color: red; 5 position: fixed; 6 top: 0px; 7 left: 0px; 8 width: 100%; 9} 10 11.header-clone.active { 12 opacity: 1; 13}

###jQuery

js

1$(function() { 2 3 $('#header').each(function(){ 4 var $window = $('winodow'), 5 $header = $(this) 6 threshold = $header.offset().top, //+ $header.outerHeight(), 7 $clone = $('<div class="header-clone"></div>'); 8 9 $window.on('scroll',$.throttle(1000 / 15, function(){ 10 if($window.scrollTop() > threshold) { 11 $clone.addClass('active').fadeIn(); 12 }else{ 13 $clone.removeClass('active').fadeOut(); 14 } 15 })); 16 $window.trigger('scroll'); 17 }); 18}); 19

試したこと

スクロールしてもついてくるスティッキーヘッダーをJSで実装する方法

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

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

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

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

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

guest

回答2

0

ご提示のjQueryを、

  • $window変数のセットされている行のスペル違い $('winodow')→$('window')
  • $header変数のセットされている行のカンマ抜け
  • プラグイン $.throttleを読み込んでね

上記を改善してみてくださいな。
※下記は改善してみたものです。(プラグインは別途読み込んでね)
※jQueryのVer.は3.2.1で検証

HTMLは、

  • ウィンドウサイズがスクロール出来るサイズでないとfadeInできないので、スクロール出来る高さをコンテンツに設定してくださいな。

jQuery

1 2$(function() { 3 4 $('#header').each(function(){ 5 var $window = $(window), 6 $header = $(this), 7 threshold = $header.offset().top, //+$header.outerHeight(), 8 $clone = $('.header-clone'); 9 10 $window.on('scroll',$.throttle(1000/15, function(){ 11 if($window.scrollTop() > threshold) { 12 $clone.addClass('active').fadeIn(); 13 }else{ 14 $clone.removeClass('active').fadeOut(); 15 } 16 })); 17 $window.trigger('scroll'); 18 }); 19});

投稿2019/01/07 02:05

編集2019/01/07 02:09
Yousuck

総合スコア349

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

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

art_porokyu

2019/01/07 10:21

ご回答ありがとうございます。 昨夜、headerーcloneをdisplay: none;にし、scrollしたらfadeInさせるというプログラムを組んでなんとかできるようになりました。 $.throttleがプラグインなのは初めて知りました! 自分でも調べてみます。 ありがとうございました。
guest

0

ベストアンサー

  • header-cloneにopadity: 0;を指定し見えないようにする。
    → opacity:0は透明なだけで要素自体は消えていないので、display:noneにする。
  • CSSでheader-cloneに.activeをつけ、opacity: 1;を指定する。
  • スクロールした際addClassでactiveをつけfadeinさせる。
    → fadeInだけで処理できるので、opacityの操作は不要。

css

1.header-clone { 2 height: 90px; 3 display:none; /* 追加 */ 4 /* 削除 5 opacity: 0; 6 */ 7 background-color: red; 8 position: fixed; 9 top: 0px; 10 left: 0px; 11 width: 100%; 12} 13/* 削除 14.header-clone.active { 15 opacity: 1; 16} 17*/

jQueryはコピペするうちにわけが分からなくなってしまった、という感じでしょうか?
これで一応動くと思いますが、まずは基礎知識を学ばれるようお勧めします。

javascript

1$(function() { 2 var $window = $(window), 3 threshold = $('#header').outerHeight(), 4 $clone = $('.header-clone'); 5 6 $window.on('scroll', function(){ 7 if($window.scrollTop() > threshold) { 8 $clone.fadeIn(); 9 }else{ 10 $clone.fadeOut(); 11 } 12 }); 13});

投稿2019/01/07 01:50

CODEISLE

総合スコア251

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

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

art_porokyu

2019/01/07 10:35 編集

ご回答ありがとうございます。 昨夜、headerーcloneをdisplay: none;にし、scrollしたらfadeInさせるというプログラムを組んでなんとかできるようになりました。 コピペするうちに・・・この変数はこの値を取得しているというのがこんがらがっている状態でした。笑 CODEISELEさんのコードでは本来のheaderが隠れてからheader-cloneがfadeInするコード(大多数のWEBサイトはそういう形式なのですが・・・)だったので、今回は模写のサイトに少しでも近づけるためthresholdを0,1に設定し、少量のスクロールでもheader-cloneが表示されるように改良してみました。 ```js var $window = $(window), $clone = $('.header-clone'), threshold = 0.1;//$('#header').outerHeight(); $window.on('scroll',function(){ if($window.scrollTop() > threshold) { $clone.fadeIn(); }else{ $clone.fadeOut(); } }); ``` ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問