2015-02-07 4 views
1

Я пытаюсь изменить заголовок фона на странице прокрутки.Изменить заголовок фона на прокрутке

Я пользуюсь приведенным ниже кодом. JS работает, при прокрутке более 100 пикселей я вижу, что класс .not-transparent добавлен к элементу в HMTL. Проблема в том, что этот класс не будет впоследствии вызываться в CSS.

Вот HTML:

<header> 
    <div id="logo">logo</div> 
    <div id="nav-wrapper"> 
     <nav> 
      nav 
     </nav> 
    </div> 
    <div class="clear"></div> 
</header> 
<script> 
$(window).on("scroll", function() { 
    if ($(this).scrollTop() > 100) { 
     $("header").addClass("not-transparent"); 
    } 
    else { 
     $("header").removeClass("not-transparent"); 
    } 
}); 
</script> 

Вот CSS

header { 
    width:100%; 
    position:fixed; 
    top:0px; 
    z-index:3; 
} 
header.not-transparent { 
    background: #252525;  
} 
+0

вы можете использовать цвет фона в своем классе заголовка, а затем сделать ниже. – user254153

+0

Поскольку прокрутка постоянно запускается, когда прокрутка вашего скрипта продолжает добавлять класс («непрозрачный»). jQuery достаточно умен, чтобы это произошло только один раз. Для другого кода может потребоваться дополнительная логика. – Mouser

ответ

2

Вы также можете использовать CSS свойство для него, как.

<script> 
$(window).on("scroll", function() { 
    if ($(this).scrollTop() > 100) { 
     $("header").css("background","#252525"); 
    } 
    else { 
     $("header").css("background","#fff"); 
    } 
}); 
</script> 

Убедитесь, что ваш дочерний div-фон установлен на прозрачный, чтобы вы могли видеть исходный фон div.

+0

Мне нравится этот подход. Есть ли способ сделать его изящным изяществом? –

+0

вы можете использовать эффект css transistion. Посмотри на это. – user254153

+0

почему-то этот ответ меняет фон моего navbar (im использует фиксированный верхний навигатор). Форма bootstrap ... любая идея почему? – weinde