2014-12-05 11 views
5

Vorrei che la barra di navigazione fosse trasparente, ma quando si scorre verso il basso la pagina cambia ad esempio il colore rosso.Come si fa a cambiare la barra di navigazione quando si scorre la pagina verso il basso?

<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> 
     </div> 
    </div> 

risposta

12

Qualcosa di simile a questo:

http://jsfiddle.net/qrhjdfmd/

var a = $(".nav").offset().top; 

$(document).scroll(function(){ 
    if($(this).scrollTop() > a) 
    { 
     $('.nav').css({"background":"red"}); 
    } else { 
     $('.nav').css({"background":"transparent"}); 
    } 
}); 
+0

Grazie per quello. Sai come farlo sfumare per colorare non solo apparire? – user3218008

+1

Aggiungi proprietà di transizione CSS come questa: http://jsfiddle.net/qrhjdfmd/. Per favore, segna la mia risposta come corretta se è utile. – KaMZaTa

+0

Grazie per aver trovato il tempo di rispondere alla domanda. Ho usato questo - .nav {transition-duration: 1s;} insieme a questo Jquery: $ (document) .ready (function() { var scroll_start = 0; var startchange = $ ('. Nav'); var offset = startchange.offset(); $ (documento) .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'); } }); }); – user3218008

1

Se uno vuol essere alla ricerca di una soluzione non jquery (js vaniglia), eccolo:

document.addEventListener("DOMContentLoaded", function() { 
    var scrollStart = 0; 
    var nav = document.querySelector(".nav"); 
    var offset = navbarElement.getBoundingClientRect(); 

    document.onscroll = function (e) { 
     scrollStart = e.target.scrollingElement.scrollTop; 
     if (scrollStart > offset.top) { 
      nav.style.background-color, rgba(34,34,34,0.9); 
     } else { 
      nav.style.background-color = "transparent"; 
     } 
    }; 
}); 
0

Soluzione con OP.

Jquery

$(document).ready(function(){  
    var scroll_start = 0; 
    var startchange = $('.nav'); 
    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'); 
     } 
    }); 
}); 

CSS

.nav { 
transition-duration: 1s; 
} 

Questo dovrebbe rendere la navigazione trasparente e quando si scorre cambierà a RGBA (34,34,34,0.9)

Problemi correlati