To jest mój prosty pasek nawigacyjny:
<div class="navbar navbar-fixed-top myfont" role="navigation">
<div class="">
<ul class="nav navbar-nav navbar-left">
<li>
<a class="navbar-brand" href="#">
<img src="assets/img/logo.png"/>
</a>
</li>
<li>
<button class="btn btn-navbar">
<i class="fa fa-edit"></i>
Create
</button>
</li>
</ul>
</div>
<ul class="nav navbar-nav navbar-right">
<li data-match-route="/"><a href="#/page-one">Login</a></li>
<li data-match-route="/"><a href="#/page-two/sub-a">Signup</a></li>
</ul>
</div>
Chciałbym tylko zapobiec zawaleniu się tego, bo nie potrzebuję tego, jak to zrobić?
Chciałbym uniknąć pisania 300 tys. Linii CSS w celu zastąpienia domyślnych stylów.
Jakieś sugestie?
ul
a nie o tychli
). Jaki jest najlepszy sposób, aby temu zapobiec?!important
oświadczenia nie są tu konieczne, dla mnie to działa bez. Staraj się ich unikać, kiedy tylko jest to możliwe (! Ważne).Nabvar upadnie na małych urządzeniach. Punkt załamania jest określony przez
@grid-float-breakpoint
zmienne. Domyślnie będzie to wcześniej768px
. W przypadku ekranów poniżej768
szerokości ekranu w pikselach pasek nawigacyjny będzie wyglądał następująco:Możliwa jest zmiana
@grid-float-breakpoint
in variable.less i ponowna kompilacja Bootstrap. Robiąc to, będziesz musiał również zmienić@screen-xs-max
navbar.less. Będziesz musiał ustawić tę wartość na nową@grid-float-breakpoint -1
. Zobacz też: https://github.com/twbs/bootstrap/pull/10465 . Jest to potrzebne, aby zmienić formularze i listy rozwijane paska nawigacyjnego w @ grid-float-breakpoint na ich wersję mobilną.Najłatwiej jest dostosować bootstrap
znajdź zmienną:
@grid-float-breakpoint
który jest ustawiony na
@screen-sm
, możesz go zmienić zgodnie ze swoimi potrzebami. Mam nadzieję, że to pomoże!Dla użytkowników SAAS
dodaj zmienne niestandardowe, tak jak
$grid-float-breakpoint: 0px;
przed@import "bootstrap.scss";
źródło
$grid-float-breakpoint: 0px;
przed@import "bootstrap.scss";
wierszemOto podejście, które pozostawia domyślne zachowanie zwijania bez zmian, jednocześnie pozwalając nowej sekcji nawigacji zawsze pozostać widoczną. To rozszerzenie
navbar
;navbar-header-menu
jest klasą CSS, którą stworzyłem i nie jest częścią właściwego Bootstrapa.Umieść to w
navbar-header
elemencie ponavbar-brand
:<div class="navbar-header-menu"> <ul class="nav navbar-nav"> <li class="active"><a href="#">I'm always visible</a></li> </ul> <form class="navbar-form" role="search"> <div class="form-group"> <input type="text" class="form-control" placeholder="Search"> </div> <button type="submit" class="btn btn-default">Submit</button> </form> </div>
Dodaj ten CSS:
.navbar-header-menu { float: left; } .navbar-header-menu > .navbar-nav { float: left; margin: 0; } .navbar-header-menu > .navbar-nav > li { float: left; } .navbar-header-menu > .navbar-nav > li > a { padding-top: 15px; padding-bottom: 15px; } .navbar-header-menu > .navbar-nav .open .dropdown-menu { position: absolute; float: left; width: auto; margin-top: 0; background-color: #fff; border: 1px solid #ccc; border: 1px solid rgba(0,0,0,.15); -webkit-box-shadow: 0 6px 12px rgba(0,0,0,.175); box-shadow: 0 6px 12px rgba(0,0,0,.175); } .navbar-header-menu > .navbar-form { float: left; width: auto; padding-top: 0; padding-bottom: 0; margin-right: 0; margin-left: 0; border: 0; -webkit-box-shadow: none; box-shadow: none; } .navbar-header-menu > .navbar-form > .form-group { display: inline-block; margin-bottom: 0; vertical-align: middle; } .navbar-header-menu > .navbar-left { float: left; } .navbar-header-menu > .navbar-right { float: right !important; } .navbar-header-menu > *.navbar-right:last-child { margin-right: -15px !important; }
Sprawdź skrzypce: http://jsfiddle.net/L2txunqo/
Uwaga:
navbar-right
można użyć do wizualnego sortowania elementów, ale nie gwarantuje, że przyciągnie element do najdalszej prawej części ekranu. Skrzypce demonstrują to zachowanie znavbar-form
.źródło
Jeśli nie używasz mniejszej wersji, oto wiersz, który musisz zmienić:
@media (max-width: 767px) { /* Change this to 0 */ .navbar-nav .open .dropdown-menu { position: static; float: none; width: auto; margin-top: 0; background-color: transparent; border: 0; box-shadow: none; } .navbar-nav .open .dropdown-menu > li > a, .navbar-nav .open .dropdown-menu .dropdown-header { padding: 5px 15px 5px 25px; } .navbar-nav .open .dropdown-menu > li > a { line-height: 20px; } .navbar-nav .open .dropdown-menu > li > a:hover, .navbar-nav .open .dropdown-menu > li > a:focus { background-image: none; } }
źródło
Następujące rozwiązanie działało dla mnie w Bootstrap 3.3.4:
CSS:
/*no collapse*/ .navbar-collapse.collapse.off { display: block!important; } .navbar-collapse.collapse.off ul { margin: 0; padding: 0; } .navbar-nav.no-collapse>li, .navbar-nav.no-collapse { float: left !important; } .navbar-right.no-collapse { float: right!important; }
następnie dodaj klasę .no-collapse do każdej z list, a klasę .off do głównego kontenera. Oto przykład napisany jadeitem:
nav.navbar.navbar-default.navbar-fixed-top .container-fluid .collapse.navbar-collapse.off ul.nav.navbar-nav.no-collapse li a(href='#' class='glyph') i(class='glyphicon glyphicon-info-sign') ul.nav.navbar-nav.navbar-right.no-collapse li.dropdown a.dropdown-toggle(href='#', data-toggle='dropdown' role='button' aria-expanded='false') | Tools span.caret ul.dropdown-menu(role='menu') li a(href='#') Tool #1 li a(href='#') | Logout
źródło
Innym sposobem jest po prostu usunięcie
collapse navbar-collapse
ze znaczników. Przykład z Bootstrap 3.3.7<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"> <nav class="navbar navbar-atp"> <div class="container-fluid"> <div class=""> <ul class="nav navbar-nav nav-custom"> <li> <a href="#" id="sidebar-btn"><span class="fa fa-bars">Toggle btn</span></a> </li> </ul> <ul class="nav navbar-nav navbar-right"> <li>Nav item</li> </ul> </div> </div> </nav>
źródło