2015-04-15 12 views
10

Używam dodatkowego filla o nazwie custom.css, aby nadpisać kod bootstrap i chciałbym wiedzieć, jak utworzyć kod, który aktywuje się tylko wtedy, gdy użytkownik mojej witryny nie znajduje się na samym szczycie strony.Ustaw przezroczystość paska nawigacyjnego Bootstrap na przewijanie

Do tej pory stworzyłem przezroczysty pasek nawigacyjny przy użyciu domyślnego kodu dostarczonego przez bootstrap. Jedyne, co muszę zrobić, to ustawić go tak, aby wykonywał: background-color: #color, gdy użytkownik przewija w dół.

Przykład: https://www.lyft.com/

Kiedy jestem w górnej części strony, navbar jest przezroczysta, ale kiedy przewinąć to staje się nieprzezroczysty.

+0

Witamy w SO! ':)' Co próbowałeś do tej pory? Czy możesz opublikować swój kod? Lyft używa javascript, aby osiągnąć ten efekt, w co wierzę. –

+0

Skopiowałem oryginalny bootstrap dla .navbar-default (jeśli go potrzebujesz, mogę ci to dostarczyć) i zmodyfikowałem kolory. W HTML ustawiam pasek, który ma być na najwyższym poziomie (używając navbar-fix-top). Nie zrobiłem nic więcej poza szukaniem czegoś, co mogłoby pomóc ... Zajrzę do lyft, maybee, znajdę coś pożytecznego. EDYCJA: kiedy użyłem "spojrzeć w lyft" miałem na myśli patrząc na ich css. – Hiperkie

+0

Lyft używa 'kątowego-js' i dodaje klasę' .opaque' do paska nawigacyjnego, gdy użytkownik przewinie do określonego punktu w dół strony. –

Odpowiedz

26

OK, aby uzyskać ten efekt, potrzebujesz następującego kodu: (Mam zamiar użyć jQuery, ponieważ jest to język obsługiwany przez 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(); 
    }); 
} 

Można również użyć ScrollSpy to zrobić.


a CSS (przykład):

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

Nie mogłem go uruchomić. Myślę, że ponieważ pasek jest już ustawiony na górze. Zmodyfikuję skrypt, aby obejrzeć inną klasę. Myślę, że to rozwiąże problem. – Hiperkie

+0

Rozwiązałem to! Dziękuję Ci bardzo! – Hiperkie

+0

@Hiperkie Nie ma za co –

Powiązane problemy