Вопрос по jquery – Изменить элемент CSS с помощью JQuery, когда прокрутка достигает точки привязки

18

В настоящее время у меня есть это решение для изменения элементов CSS, когда страница достигает определенной точки, но я хотел бы использовать # точку привязки вместо значения пикселя (1804), чтобы реагировать на меньшие экраны. Я знаю, что это должно быть легко, но я не могу найти, как:

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

Это текущее состояние:http: //tibio.c Спасибо

Ваш Ответ

3   ответа
36

Попробуй это

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 {
      // ...
    }
});
это работает, спасибо anoonimo
У этого есть слово - если размер окна будет изменен, $ targetOffset не будет точным. Вы могли бы использовать$(window).resize(). Если у вас есть функция отскока, вам также следует использовать ее (см.ссылк). Olivier Butler
Что делать, если у меня много элементов с одним и тем же классом, поэтому у меня есть цикл с each (). Как я могу реализовать эту строку var targetOffset = $ ("# anchor-point"). Offset (). Top; с каждым @Vohuman? Anahit DEV
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();   
   }         
 });
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.htm

Похожие вопросы