2016-04-03 21 views
0

javascriptを使用しているため、ユーザーのスクロール量に応じて色を変更することができます。これは完全にうまく動作しますが、画面サイズが変更されるたびにJavaスクリプトが更新される方法を見つける際に問題があります。アンカーを正しく動作させるためには、すべてのサイズでページを更新する必要があります。私は、アンカーの間のdivのいくつかはパーセンテージに基づいていると信じて、高さはサイトのサイズを変更するたびに変更されますが、JavaScriptはそれを読んでいません。画面のサイズ変更時にjavascriptを更新

$(document).ready(function(){  
     var scroll_start = 0; 
     var firstchange = $('.anchor'); 

    var f_offset = firstchange.offset(); 

    $(document).scroll(function() { 
     scroll_start = $(this).scrollTop(); 
     if(scroll_start > f_offset.top) { 
      $('.nav').css('background-color', '#fff'); 
     } 
     else { 
      $('.nav').css('background-color', '#000'); 
     } 

    }); 
+0

作業以下の回答をしましたか? –

+0

いいえ残念なことに、残念ながら機能を無効にすることはできませんでした。なぜなら、何らかの理由で自分の機能が無効になってしまい、ビューポートが毎回更新される必要があるため、サイズ変更されました。 –

答えて

0

あなたは、ウィンドウのサイズが変更されたとき、関数をトリガする、画面サイズの変化を検出するために、ウィンドウにイベントリスナーを追加することができます。

jsfiddle demo hereを参照してください。

window.addEventListener("resize", winResize); 

function winResize(){ 

    var scroll_start = 0; 
    var firstchange = $('.anchor'); 
    var f_offset = firstchange.offset(); 

    $(document).scroll(function() { 
     scroll_start = $(this).scrollTop(); 
     if(scroll_start > f_offset.top) { 
      $('.nav').css('background-color', '#fff'); 
     } 
     else { 
      $('.nav').css('background-color', '#000'); 
     } 
    }); 
} 
+0

これは、古いバージョンのIEが動作するために必要なことがあります。(document).documentElement.scrollTop? document.documentElement.scrollTop:document.body.scrollTop; – Sparky256

+0

@ Sparky256 tbh私は100%確実ではありません。 –

0
window.addEventListener("resize", winResize); 

関数winResize(){

var scroll_start = 0; 
var firstchange = $('.anchor'); 
var f_offset = firstchange.offset(); 

$(document).scroll(function() { 
    scroll_start = $(this).scrollTop? document.documentElement.scrollTop:document.body.scrollTop(); 
    if(scroll_start > f_offset.top) { 
     $('.nav').css('background-color', '#fff'); 
    } 
    else { 
     $('.nav').css('background-color', '#000'); 
    } 
}); 

}

+0

@Paulが不足していると思われる場合は、自由に回答を編集してください。私はこれが良いのか分かりません、私は同じコード(とscrollLeft)を使用して、ページのスクロール位置を測定します。私にとっては、他のルーチンをテストする診断ルーチンに過ぎません。 – Sparky256

+0

どちらもわかりませんが、どちらの方法もユーザーが求めているものに基づいて動作するはずです。よくやった :-) –

関連する問題