2017-04-14 2 views
1

私は基本的に、スクロール時に色を変えるナビゲーションバー用の別の質問のコードをいくつかコピーしました。これはそれです:Navbarはスクロールの色を変更しますが、このjQueryの仕組みはどうですか?

$(document).ready(function(){  
var scroll_start = 0; 
var startchange = $('#startchange'); 
var offset = startchange.offset(); 
    if (startchange.length){ 
$(document).scroll(function() { 
    scroll_start = $(this).scrollTop(); 
    if(scroll_start > offset.top) { 
     $(".navbar-default").css('background-color', '#f0f0f0'); 
    } else { 
     $('.navbar-default').css('background-color', 'transparent'); 
    } 
}); 
} 

});

それはすべてうまくいきました(必要なID /クラスがofcourseに変更されました)が、私は分かりません。私は、このコードは基本的には、画面の上端が#startchangeの上をスクロールした後、navbarの色を変更すると言っていることを理解しています。しかし、それは本当に、すべてのオフセットとscrtollTopが何をしているのか分かりません。明らかに、私はJS/jQueryをかなり新しくしました。前もって感謝します。

答えて

0

要約すると、Offset()およびScrollTop()はJQuery関数です。 JQueryは、Javascript関数の単なるライブラリです。 JSは、ブラウザが解釈する言語です。

私はあなたに本当の定義を挙げてみましょう:

オフセット():文書に対するマッチした要素のセットの最初の要素の現在の座標を取得します。

SrollTop():一致する要素のセットの最初の要素のスクロールバーの現在の垂直位置を取得するか、一致する要素ごとにスクロールバーの垂直位置を設定します。

あなたのコードは、ドキュメントの準備ができたら関数を実行します。

$(document).ready(function(){ 

3つの変数(var)でサポートされています。

var scroll_start = 0; 
var startchange = $('#startchange'); 
var offset = startchange.offset(); 

とドキュメントのイベント「スクロール」がコードがクラスのナビゲーションバー-デフォルト 'で要素からいくつかのCSSプロパティを変更する関数を呼び出し検出されました。条件が満たされ、あなたがIDを持つ要素のオフセット「startchange」(#startchange)よりも高い値をスクロールしたとき

$(document).scroll(function() { 
    scroll_start = $(this).scrollTop(); 
    if(scroll_start > offset.top) { 
     $(".navbar-default").css('background-color', '#f0f0f0'); 
    } else { 
     $('.navbar-default').css('background-color', 'transparent'); 
    } 
}); 

ここでは、関数の各

ハッピーに相談することができますJQuery Documentationです学習。ハッピーコーディング。お気軽にお問い合わせください。

+0

お返事ありがとうございますが、関数が発生したときに変更したい場合はどうなりますか?このコードでは、画面の上端が#startchangeの上をスクロールするときにCSSが変更されますが、#startchangeのボトルトンをスクロールした後に変更したい場合はどうなりますか?オフセットはありません。右下? –

+0

いいえ、他の関数height()があります:m:atched要素のセットの最初の要素の現在の計算高さを取得します。 要素の下位オフセットの値を変数に取り入れるために再生することができます。コンポーネントの高さをOffsetlTop(offset.top + component.height)の値に加算するだけです。 ここをクリックしてください。他のJQueryリクエストに少しお答えしましたが、いくつかの例があります。 http://stackoverflow.com/a/43403139/7733724 – Sam

+0

JQueryは特定のシナリオのための一般的な方法を提供するのではなく、(他の人との間に)DOM全体の支配のためのツールを提供していることに留意する必要があります。あなたは通常、すべてのシナリオ/状況のためにすべてのDOM要素で必要なことを行うための便利な関数や関数の組み合わせを見つけるでしょう。ほとんどのJQuery式は1つ以上の関数を組み合わせています。$()はJQuery関数ですが、早くgetElementbyId/getElementByClass JS関数を作っています。重要なのは、最初に構文を理解してから、使用可能な関数と実践を知ってこれらのツールを知ることです。 – Sam

関連する問題