2012-05-11 15 views
18

現在、ページが特定のポイントに達したときにcss要素を変更するこの解決策がありますが、ピクセル値の代わりにアンカーポイントを使用したいと考えています(1804 )を小さな画面で反応させることができます。私はそれが簡単にする必要があります知っているが、私はどのように見つけることができません:これは、現在の状態であるスクロールがアンカーポイントに達したときにCSS要素を変更します

$(document).scroll(function(){ 
    if($(this).scrollTop() > 1804) 
    { 
     $('#voice2').css({"border-bottom":"2px solid #f4f5f8"}); 
     $('#voice3').css({"border-bottom":"2px solid #2e375b"}); 
    } 
}); 

http://tibio.ch

答えて

35

はこの試してみてください、ありがとう:

var targetOffset = $("#anchor-point").offset().top; 

var $w = $(window).scroll(function(){ 
    if ($w.scrollTop() > targetOffset) { 
     $('#voice2').css({"border-bottom":"2px solid #f4f5f8"}); 
     $('#voice3').css({"border-bottom":"2px solid #2e375b"}); 
    } else { 
     // ... 
    } 
}); 
+0

それは働く、ありがとう – anoonimo

+0

これはフロアを持っています - ウィンドウがサイズ変更された場合、$ targetOffsetは正確ではありません。 '$(window).resize()'を使うことができます。デバウンス機能がある場合は、それも使用する必要があります([link](https://github.com/cowboy/jquery-throttle-debounce)参照))。 –

+0

私は同じクラスの多くの要素を持っているので、each()でループしています。この行を実装する方法var targetOffset = $( "#anchor-point")。offset()。 @Vohumanと一緒に? –

2
function scroll_style() { 
    var window_top = $(window).scrollTop(); 
    var div_top = $('#anchor-point').offset().top; 

    if (window_top > div_top){ 
     $('#voice2').css({"border-bottom":"2px solid #f4f5f8"}); 
     $('#voice3').css({"border-bottom":"2px solid #2e375b"}); 
    } 
} 
$(function() { 
    $(window).scroll(scroll_style); 
    scroll_style(); 
}); 

ソリューションベース:http://blog.yjl.im/2010/01/stick-div-at-top-after-scrolling.html

4
$(window).bind("scroll", function() { 
    var $sec1 = $('.bg1').offset().top; 
    var $sec2 = $('.bg2').offset().top; 
    var $sec3 = $('.bg3').offset().top; 
    var $sec4 = $('.bg4').offset().top; 
    var $sec5 = $('.carousel-indicators').offset().top; 

    if ($(this).scrollTop() < $sec2){ 
    $(".navbar1").fadeOut(); 
    $(".navbar2").fadeOut(); 
    $(".navbar3").fadeOut(); 
    }  
    if ($(this).scrollTop() > $sec2 & $(this).scrollTop() < $sec3){ 
    $(".navbar1").fadeIn(); 
    $(".navbar2").fadeOut();  
    } 
    if ($(this).scrollTop() > $sec3 & $(this).scrollTop() < $sec4){ 
    $(".navbar2").fadeIn(); 
    $(".navbar3").fadeOut(); 
    }  
    if ($(this).scrollTop() > $sec4 & $(this).scrollTop() < $sec5){ 
    $(".navbar3").fadeIn(); 
    $(".navbar2").fadeOut(); 
    }  
    if ($(this).scrollTop() > $sec5){ 
    $(".navbar1").fadeOut(); 
    $(".navbar2").fadeOut(); 
    $(".navbar3").fadeOut(); 
    }   
}); 
関連する問題