2014-12-05 2 views
2

Привет, я делаю сайт на данный момент, и у меня возникают проблемы с анимацией панели навигации.Jquery animate navigation color

Я бы хотел, чтобы панель навигации была прозрачной изначально, чем для изменения фонового цвета после определенного div. Я сделал это, но хочу, чтобы фоновый цвет исчезал, а не просто появлялся. Ниже приведены HTML и JQuery.

Как заставить его исчезать до фонового цвета?

HTML

<div class="nav"> 
     <div class="container"> 
     <div class="logo"> 
     <a href="#"><img src="RepublicSquare_logo.svg" style="height: 80px;"></a> 
     </div> 
     <div class="navMain"> 
      <ul> 
       <li><a href="#">Home</a></li> 
       <li><a href="#">About</a></li> 
       <li><a href="#">Services</a></li> 
       <li><a href="#">Portfolio</a></li> 
       <li><a href="#">Contact</a></li> 
      </ul> 
     </div> 

Jquery

<script> 

    $(document).ready(function(){  
    var scroll_start = 0; 
    var startchange = $('#c-title'); 
    var offset = startchange.offset(); 
    $(document).scroll(function() { 
     scroll_start = $(this).scrollTop(); 
     if(scroll_start > offset.top) { 
      $('.nav').css('background-color', 'rgba(34,34,34,0.9)'); 
     } else { 
      $('.nav').css('background-color', 'transparent'); 
     } 
    }); 
}); 
</script> 

Спасибо, что нашли время, чтобы ответить на этот вопрос. (я надеюсь, что вопрос ясен, если не дайте мне знать)

+0

Могли вы делаете jsfiddle? => [JSFIDDLE] (http://www.jsfiddle.net) –

+0

@Godisgood Конечно, я сделаю это сейчас. – user3218008

+0

@ user3218008, поэтому все здесь точно меняет цвет фона, но вы хотите, чтобы это изменение от 'transparent' до' rgba (34,34,34,0.9) ', чтобы исчезнуть? – ethorn10

ответ

1

использовать этот код в ваш CSS

.nav{ 
    transition-duration: 2s; 
} 

DEMO

+0

Извините, что не работал – user3218008

+0

где # c-title в вашем html-коде ???? –

+0

Это был только элемент заголовка, в котором он мог бы изменить цвет. – user3218008

1
<script> 

    $(document).ready(function(){  
    var scroll_start = 0; 
    var startchange = $('#c-title'); 
    var offset = startchange.offset(); 
    $(document).scroll(function() { 
     scroll_start = $(this).scrollTop(); 
     if(scroll_start > offset.top) { 
      $('.nav').animate({background-color: rgba(34,34,34,0.9)}, 1000); 
     } else { 
      $('.nav').css('background-color', 'transparent'); 
     } 
    }); 
}); 
</script> 
+0

Извините, но это не сработало. – user3218008

+0

, возможно, попробуйте сейчас ... без qoute – Bran

+0

нет, что не работает. Знаете ли вы какие-либо другие варианты, которые я мог бы использовать? – user3218008

1

Попробуйте использовать сборку JQuery в animate() функции. Например:

$('yourDiv').animate({"color" : "red"},500); 

Это приведет к исчезновению цвета, а не к его изменению.

+0

Я пробовал это, но это не сработало. Вы имеете в виду вот так: $ (document).готов (функция() { вар scroll_start = 0; вар startchange = $ ('# C-заголовок'); вар смещение = startchange.offset(); $ (документ) .scroll (функция() { scroll_start = $ (this) .scrollTop(); if (scroll_start> offset.top) { $ ('. nav'). animate ({"color": "red"}, 500); } else { $ ('.nav'). css ('background-color', 'transparent'); } }); }); – user3218008

+0

Да, это обеспечит полную загрузку сайта, прежде чем что-либо произойдет. – DripDrop

1

JQuery-х fadeIn() не предназначен для такого вида использования. Он исчезает в совпадающих элементах, а не с конкретными свойствами. Как уже упоминалось, вы могли бы использовать animate(), но из documentation, вы увидите, что background-color не один из свойств, если плагин не используется:

Все анимированные свойства должны быть анимированы одним числовым значением , , за исключением случаев, указанных ниже; большинство свойств, которые нечисловая не могут быть анимированные, используя базовую функциональность JQuery (например, ширина, высота, или влево можно анимировать, но цвет фона не может быть, если не используется jQuery.Color() плагин)