2012-05-11 90 views
18

Mam obecnie to rozwiązanie, aby zmienić elementy css, gdy strona osiągnie określony punkt, ale chciałbym użyć # punktu kontrolnego zamiast wartości piksela (1804), aby reagować na mniejszych ekranach. Wiem, że to musi być łatwe, ale nie mogę znaleźć jak:Zmiana elementu CSS za pomocą JQuery, gdy scroll osiągnie punkt zakotwiczenia

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

ten jest obecny stan: http://tibio.ch Dziękuję

Odpowiedz

35

Spróbuj tego:

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

to działa, dziękuje – anoonimo

+0

To ma podłogę - jeśli okno zostanie zmienione, $ targetOffset nie będzie dokładne. Możesz użyć '$ (window) .resize()'. Jeśli masz funkcję odrzucania, powinieneś także użyć tej funkcji (patrz [link] (https://github.com/cowboy/jquery-throttle-debounce)). –

+0

co jeśli mam wiele elementów z tej samej klasy, więc mam pętlę z każdym(). Jak mogę zaimplementować tę linię var targetOffset = $ ("# anchor-point"). Offset(). Top; z każdym @Vohumanem? –

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(); 
}); 

Rozwiązanie na podstawie: 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(); 
    }   
}); 
Powiązane problemy