2016-04-03 45 views
0

Kullanıcının ne kadar kaydığıyla ilgili olarak nav arka planımın rengini değiştirmesine izin veren bazı javascript kullanıyorum. Tamamen gayet iyi çalışıyor, ancak java komut dosyasının ekran boyutu her değiştiğinde güncellenmesiyle ilgili bir sorun yaşıyorum, çünkü bağlantıyı doğru yapmak için her yeniden boyutta sayfayı yenilemeliyim. Çapa arasındaki bazı boşlukların yüzdeye dayandığına inanıyorum, bu nedenle site yeniden boyutlandırıldığında her zaman yükseklik değişiyor, ancak javascript bunu okuyor.Ekran yeniden boyutlandırıldığında javascript güncelleştirmesi

$(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

işin altına cevapları mi? –

+0

Hayır Maalesef çalışamadım, sadece bir sebepten dolayı işlevimi devre dışı bırakıyordum, eğer bu işe yaramayan bir şey varsa sadece bir can sıkıntısı var, çünkü siteye her defasında görünüm yenilemeye ihtiyaç duyuyor. resized. –

cevap

0

Sen pencere yeniden boyutlandırıldığında sonra bir işlevi tetikleyecek ekran boyutunda bir değişiklik tespit etmek için pencereye bir olay dinleyicisi ekleyebilir.

Nasıl çalıştığını gösteren jsfiddle demo here konusuna bakın.

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

Bu, IE'nin eski sürümlerinin çalışması için gerekli olabilir (belge) .documentElement.scrollTop? document.documentElement.scrollTop: document.body.scrollTop; – Sparky256

+0

@ Sparky256 tbh 100% emin değilim. –

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

fonksiyon 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'dan bir şey kaçırdığına inanıyorsanız cevabı düzenlemekten çekinmeyin. Bunun daha iyi olup olmadığını bilmiyorum, sadece sayfanın kaydırma konumunu ölçmek için aynı kodu (artı scrollLeft) kullanıyorum. Benim için diğer rutinleri test etmek için sadece bir teşhis rutini. – Sparky256

+0

Ben de emin değilim, ama her iki yol da kullanıcının ne istediğine göre çalışmalıdır! iyi iş :-) –