2015-04-15 23 views
10

Io uso un file secondario chiamato custom.css per sovrascrivere il codice di bootstrap e vorrei sapere come creare un codice che si attiva solo quando il visitatore del mio sito non è in cima della pagina.Imposta trasparenza barra di navigazione Bootstrap sullo scorrimento

Fino ad ora ho creato una barra di navigazione trasparente utilizzando il codice predefinito fornito da bootstrap. L'unica cosa che devo fare è impostarla per l'esecuzione: background-color: #color quando il visitatore sta scorrendo verso il basso.

Esempio: https://www.lyft.com/

Quando sono nella parte superiore della pagina, la barra di navigazione è trasparente, ma quando ho scorrere verso il basso diventa opaca.

+0

Benvenuti a SO! ':)' Che cosa hai provato finora? Puoi pubblicare il tuo codice? Lyft usa javascript per ottenere quell'effetto credo. –

+0

Ho copiato il bootstrap originale per .navbar-default (se ne hai bisogno, posso fornirtelo) e ho modificato i colori. In HTML ho impostato la barra in alto fisso (usando navbar-fixed-top). Non ho fatto nient'altro se non alla ricerca di qualcosa che potrebbe aiutare ... Mi guarderò bene, forse troverò qualcosa di utile. EDIT: quando ho usato "look in lyft" intendevo guardare nel loro css. – Hiperkie

+0

Lyft usa 'angular-js' e aggiunge la classe' .opaque' alla barra di navigazione una volta che l'utente scorre verso un certo punto lungo la pagina. –

risposta

26

Ok, per ottenere questo effetto è necessario il seguente codice: (Userò jQuery poiché è il linguaggio supportato da bootstrap).


jQuery:

/** 
* Listen to scroll to change header opacity class 
*/ 
function checkScroll(){ 
    var startY = $('.navbar').height() * 2; //The point where the navbar changes in px 

    if($(window).scrollTop() > startY){ 
     $('.navbar').addClass("scrolled"); 
    }else{ 
     $('.navbar').removeClass("scrolled"); 
    } 
} 

if($('.navbar').length > 0){ 
    $(window).on("scroll load resize", function(){ 
     checkScroll(); 
    }); 
} 

È inoltre possibile utilizzare ScrollSpy per fare questo.


e il CSS (esempio):

/* Add the below transitions to allow a smooth color change similar to lyft */ 
.navbar { 
    -webkit-transition: all 0.6s ease-out; 
    -moz-transition: all 0.6s ease-out; 
    -o-transition: all 0.6s ease-out; 
    -ms-transition: all 0.6s ease-out; 
    transition: all 0.6s ease-out; 
} 

.navbar.scrolled { 
    background: rgb(68, 68, 68); /* IE */ 
    background: rgba(0, 0, 0, 0.78); /* NON-IE */ 
} 
+0

Non ero in grado di avviarlo. Penso che la barra sia già fissata sopra. Modificherò la sceneggiatura per guardare un'altra classe. Penso che questo risolverà il problema. – Hiperkie

+0

L'ho risolto! Grazie mille! – Hiperkie

+0

@Hiperkie Prego –