Korzystam z bootstrap na mojej stronie i mam problemy ze stałym paskiem nawigacyjnym. Kiedy używam zwykłego paska nawigacyjnego, wszystko jest w porządku. Jednak gdy próbuję zmienić go na stały pasek nawigacyjny, cała inna zawartość witryny przesuwa się w górę, tak jakby paska nawigacyjnego nie było, a pasek nawigacyjny nakłada się na niego. oto w zasadzie jak to ułożyłem:
.navbar.navbar-fixed-top
.navbar-inner
.container
.container
.row
//yield content
Próbowałem dokładnie skopiować przykłady bootstraps, ale ten problem nadal występuje tylko wtedy, gdy korzystam z paska nawigacyjnego naprawionego u góry. Co ja robię źle?
źródło
Jak inni stwierdzili, dodanie wyściółki do ciała działa świetnie. Ale kiedy zwężasz ekran (do szerokości telefonu komórkowego), pomiędzy paskiem nawigacyjnym a ciałem jest przerwa. Ponadto zatłoczony pasek nawigacyjny może zawijać się do paska wieloliniowego, zastępując ponownie część zawartości.
To rozwiązało dla mnie tego rodzaju problemy
Powoduje to domyślnie wypełnienie o wielkości 40 pikseli i 0 pikseli przy szerokości poniżej 768 pikseli (co zgodnie z dokumentami bootstrap to odcięcie układu telefonu komórkowego, w którym utworzona zostanie przerwa)
źródło
body { padding-top: 40px; }
wystarczyo wiele bardziej przydatne rozwiązanie w celach informacyjnych, działa idealnie we wszystkich moich projektach:
zmień swój pierwszy wiersz z
do
źródło
Ten problem jest znany i istnieje obejście tego problemu w serwisie startowym Twittera:
To działało dla mnie:
źródło
@ Ryan, masz rację, twarde kodowanie wysokości sprawi, że będzie działać źle w przypadku niestandardowych pasków nawigacyjnych. Oto kod, z którego korzystam szczęśliwie dla BS 3.0.0:
źródło
parseInt
wartości css wysokości, właśnie użyłem$('#main-navbar').height()
, ale poza tym było to bardzo pomocne i rozwiązało mój problem, dziękuję.Stawiam to przed pojemnikiem z plonem:
Podoba mi się to podejście, ponieważ dokumentuje włamanie potrzebne do jego działania, a także działa w przypadku mobilnej nawigacji.
EDYCJA - działa to znacznie lepiej:
źródło
Problem polega na tym, że pasek nawigacyjny jest przymocowany do góry, który nakłada się na zawartość, chyba że określono dopełnienie body. Żadne z podanych tutaj rozwiązań nie działa w 100% przypadkach. Rozwiązanie JQuery miga / przesuwa stronę po załadowaniu strony, co wygląda dziwnie.
Prawdziwym rozwiązaniem dla mnie nie jest użycie navbar-fixed-top, ale navbar-static-top.
źródło
Jak napisałem w podobnym pytaniu, odniosłem duży sukces, tworząc fałszywy, nie naprawiony pasek nawigacyjny tuż przed moim prawdziwym stałym paskiem nawigacyjnym.
Odstępy sprawdzają się doskonale na wszystkich rozmiarach ekranu.
źródło
Rozwiązanie dla Bootstrap 4, działa idealnie we wszystkich moich projektach:
zmień swój pierwszy wiersz z
do
Dokumentacja bootstrapu
O czasie zrobili to dobrze: D
źródło
Wszystkie poprzednie rozwiązania kodują 40 pikseli na stałe w HTML lub CSS w taki czy inny sposób. Co się stanie, jeśli pasek nawigacyjny zawiera inny rozmiar czcionki lub obraz? Co zrobić, jeśli mam dobry powód, aby nie zadzierać z wyściółką ciała ? Szukałem rozwiązania tego problemu i oto, co wymyśliłem:
Możesz go przesuwać w górę lub w dół, dostosowując „1”. Wydaje mi się, że działa dla mnie niezależnie od rozmiaru zawartości paska nawigacyjnego, przed i po zmianie rozmiaru.
Jestem ciekaw, co myślą o tym inni: podziel się swoimi przemyśleniami. (Zostanie to zrefaktoryzowane, aby się nie powtarzało, btw.) Czy oprócz używania jQuery istnieją jeszcze inne powody, aby nie podejść do problemu w ten sposób? Mam go nawet z dodatkowym paskiem nawigacyjnym, takim jak ten:
PS: Powyżej znajduje się na Bootstrap 2.3.2 - czy będzie działał w wersji 3.x Dopóki ogólne nazwy klas pozostaną ... w rzeczywistości powinno działać niezależnie od bootstrap, prawda?
EDYCJA: Oto pełna funkcja jquery, która obsługuje dwa skumulowane, responsywne stałe paski nawigacyjne o dynamicznym rozmiarze. Wymaga 3 klas HTML (lub mógłby użyć identyfikatorów): user-top, admin-top i contentwrap:
źródło
Po prostu zmień za
fixed-top
pomocąsticky-top
. w ten sposób nie będziesz musiał obliczać wypełnienia.I to działa !!
źródło
Also note that .sticky-top uses position: sticky, which isn’t fully supported in every browser.
Zobacz - getbootstrap.com/docs/4.5/components/navbar/#placementAby obsługiwać linie zawijania na pasku menu, zastosuj identyfikator na pasku nawigacyjnym, tak jak poniżej:
i dodaj ten mały skrypt do głowy po dołączeniu jquery, w ten sposób:
W ten sposób górna wyściółka korpusu zostaje automatycznie dostosowana.
źródło
w przypadku Bootstrap 3. + użyłbym następującego CSS, aby naprawić navbar-fixed-top, a problem z zakotwiczeniem skoku nakładał się na podstawie https://github.com/twbs/bootstrap/issues/1768
źródło
użyj tej klasy w tagu nav
Do bootstrap 4
źródło
Wszystko co musisz zrobić to
źródło
Zgodnie z odpowiedzią Nicka Bisby'ego, jeśli napotkasz ten problem przy użyciu HAML w szynach i zastosowałeś tutaj poprawkę Roberto Barrosa:
(Zobacz https://github.com/seyhunak/twitter-bootstrap-rails/issues/91 )
... musisz umieścić treść CSS przed instrukcją request w następujący sposób:
Jeśli instrukcja wymaga przed CSS treści, nie zadziała.
źródło
Zrobiłbym to:
To powinno upewnić się, że blok nawigacyjny nie rozciąga się na dół strony i nie obejmuje zawartości strony.
źródło
Właśnie owinąłem pasek nawigacyjny w
Brak wymyślnego hokusa, ale zadziałało ..
źródło
nav-? ??
reprezentuje?