Отзывчивый выпадающий navbar с угловой-ui bootstrap (сделано в правильном угловом виде пути)
Я создал JSFiddle с выпадающей навигационной панелью, используя модуль angular-ui-boostrap "ui.загрузчик.dropdownToggle": http://jsfiddle.net/mhu23/2pmz5/
<div class="navbar navbar-fixed-top">
<div class="navbar-inner">
<div class="container"> <a class="brand" href="#">
My Responsive NavBar
</a>
<ul class="nav">
<li class="divider-vertical"></li>
<li class="dropdown"> <a href="#" class="dropdown-toggle">
Menu 1 <b class="caret"></b>
</a>
<ul class="dropdown-menu">
<li><a href="#/list">Entry 1</a>
</li>
<li><a href="#/list">Entry 2</a>
</li>
</ul>
</li>
....
</ul>
</div>
</div>
</div>
насколько я понимаю, это правильный, угловой способ реализовать такое выпадающее меню. "Неправильным" способом, с точки зрения angularjs, было бы включить bootstrap.js и использовать"data-toggle= "выпадающий список"... Я прямо здесь?
теперь я хотел бы добавить, отзывчивый поведение моей навигационной панели, как это сделано в следующей скрипке: http://jsfiddle.net/ghtC9/6/
но есть что-то, что мне не нравится в приведенном выше решении. Парень включил бутстрэп.Джей!
Итак, каков был бы правильный угловой способ добавить отзывчивое поведение к моей существующей navbar?
мне, очевидно, нужно использовать загрузочные адаптивные классы navbar, такие как "nav-collapse collapse navbar-responsive-collapse". Но я не знаю как...
Я был бы очень признателен за вашу помощь!
спасибо заранее! Майкл
4 ответа:
вы можете сделать это с помощью директивы "свернуть":http://jsfiddle.net/iscrow/Es4L3/ (проверьте два "Примечание" в HTML).
<!-- Note: set the initial collapsed state and change it when clicking --> <a ng-init="navCollapsed = true" ng-click="navCollapsed = !navCollapsed" class="btn btn-navbar"> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </a> <a class="brand" href="#">Title</a> <!-- Note: use "collapse" here. The original "data-" settings are not needed anymore. --> <div collapse="navCollapsed" class="nav-collapse collapse navbar-responsive-collapse"> <ul class="nav">
то есть вам нужно сохранить свернутое состояние в переменной и изменить свернутое также (просто) изменив значение этой переменной.
релиз 0.14 добавил a
uib-
префикс to компоненты:https://github.com/angular-ui/bootstrap/wiki/Migration-guide-for-prefixes
изменения:
collapse
доuib-collapse
.
2015-06 обновление
на основе комментарий/пример антуанепайре:
используя
uib-collapse
атрибут обеспечивает анимацию:http://plnkr.co/edit/omyoOxYnCdWJP8ANmTc6?p=preview<nav class="navbar navbar-default" role="navigation"> <div class="navbar-header"> <!-- note the ng-init and ng-click here: --> <button type="button" class="navbar-toggle" ng-init="navCollapsed = true" ng-click="navCollapsed = !navCollapsed"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <a class="navbar-brand" href="#">Brand</a> </div> <div class="collapse navbar-collapse" uib-collapse="navCollapsed"> <ul class="nav navbar-nav"> ... </ul> </div> </nav>
древняя..
Я вижу, что вопрос обрамлен вокруг BS2, но я думал, что я бы предложил решение для Bootstrap 3, используя решение ng-класса, основанное на предложениях в ui.bootstrap выпуск 394:
единственное отличие от официальный пример загрузки добавление
ng-
атрибуты, отмеченные комментариями, ниже:<nav class="navbar navbar-default" role="navigation"> <div class="navbar-header"> <!-- note the ng-init and ng-click here: --> <button type="button" class="navbar-toggle" ng-init="navCollapsed = true" ng-click="navCollapsed = !navCollapsed"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <a class="navbar-brand" href="#">Brand</a> </div> <!-- note the ng-class here --> <div class="collapse navbar-collapse" ng-class="{'in':!navCollapsed}"> <ul class="nav navbar-nav"> ...
вот обновленный рабочий пример:http://plnkr.co/edit/OlCCnbGlYWeO7Nxwfj5G?p=preview (кончик шляпы Ларс)
это, кажется, работает для меня в простых случаях использования, но вы заметите в примере, что второй выпадающий список отрезан... удачи!
Не уверен, что у кого-то есть такая же отзывчивая проблема, но это было просто простое решение css для меня.
тот же пример
... ng-init="isCollapsed = true" ng-click="isCollapsed = !isCollapsed"> ... ... div collapse="isCollapsed"> ...
С
@media screen and (min-width: 768px) { .collapse{ display: block !important; } }
My solotion для отзывчивой / выпадающей навигационной панели с angular-ui bootstrap (при обновлении до angular 1.5 и, ui-bootrap 1.2.1)
index.html
... <link rel="stylesheet" href="/css/app.css"> </head> <body> <nav class="navbar navbar-inverse navbar-fixed-top"> <div class="container"> <input type="checkbox" id="navbar-toggle-cbox"> <div class="navbar-header"> <label for="navbar-toggle-cbox" class="navbar-toggle" ng-init="navCollapsed = true" ng-click="navCollapsed = !navCollapsed" aria-controls="navbar"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </label> <a class="navbar-brand" href="#">Project name</a> <div id="navbar" class="collapse navbar-collapse" ng-class="{'in':!navCollapsed}"> <ul class="nav navbar-nav"> <li class="active"><a href="/view1">Home</a></li> <li><a href="/view2">About</a></li> <li><a href="#">Contact</a></li> <li uib-dropdown> <a href="#" uib-dropdown-toggle>Dropdown <b class="caret"></b></a> <ul uib-dropdown-menu role="menu" aria-labelledby="split-button"> <li role="menuitem"><a href="#">Action</a></li> <li role="menuitem"><a href="#">Another action</a></li> </ul> </li> </ul> </div> </div> </div> </nav>
app.css
/* show the collapse when navbar toggle is checked */ #navbar-toggle-cbox:checked ~ .collapse { display: block; } /* the checkbox used only internally; don't display it */ #navbar-toggle-cbox { display:none }