如何使用 ng-show 和 ng-click 调整移动菜单的角度?
How to Angularize Mobile menu with ng-show & ng-click?
http://plnkr.co/edit/F8K66L?p=preview
我有一个 li
菜单,在 300px
进入 display:none
,而 mobile_nav
按钮打开。
现在在我的控制器中我正在使用这个
main.js
$scope.mobileMenu = function() {
var menu = document.getElementById('main_nav');
if (menu.style.display == 'block') {
menu.style.display = 'none';
} else {
menu.style.display = 'block';
}
};
如果我打开移动菜单,然后关闭它,即使我在 CSS 中有 display:block
,它在调整大小时仍会在较大的视图中保持关闭状态。如果在其中单击某个项目,还需要关闭移动菜单。
尝试过这个,但没有任何运气
index.html
<div
ng-click="isMobileNavOpen = !isMobileNavOpen"
class="mobile_nav">
=
</div>
<nav id="main_nav" ng-init="isMobileNavOpen = true" ng-show="isMobileNavOpen">
<ul>
<li><a ui-sref="home">Home</a></li>
<li><a ui-sref="about">About</a></li>
</ul>
</nav>
style.css
// the button
.mobile_nav {
display: none;
}
@media all and (max-width: 300px) {
.mobile_nav {
display: block;
}
#main_nav {
display: none;
}
#main_nav li {
float: none;
margin-bottom 20px;
}
#main_nav a {
width: 100%;
}
}
找到完美的图书馆!
https://github.com/AnalogJ/matchmedia-ng
^ 这是解决我的问题的代码(需要 Angular 检测尺寸的方法)
var unregister = matchmedia.onPhone( function(mediaQueryList){
$scope.isPhone = mediaQueryList.matches;
});
必须使用覆盖来调整我的像素规格:
angular.module('myapp', ['matchmedia-ng']).config(['matchmediaProvider', function (matchmediaProvider) {
matchmediaProvider.rules.phone = "(max-width: 500px)";
matchmediaProvider.rules.desktop = "(max-width: 1500px)";
}]);
还必须继续使用 2 个不同的导航:/ 仍将尝试尝试使用它,看看我是否可以只使用 1 个导航:
<div class="mobile_nav noselect">
<div ng-click="isMobileNavOpen = !isMobileNavOpen" class="icon-menu"></div>
</div>
<nav id="main_nav">
<nav id="mobile_nav" ng-show="isMobileNavOpen">
http://plnkr.co/edit/F8K66L?p=preview
我有一个 li
菜单,在 300px
进入 display:none
,而 mobile_nav
按钮打开。
现在在我的控制器中我正在使用这个
main.js
$scope.mobileMenu = function() {
var menu = document.getElementById('main_nav');
if (menu.style.display == 'block') {
menu.style.display = 'none';
} else {
menu.style.display = 'block';
}
};
如果我打开移动菜单,然后关闭它,即使我在 CSS 中有 display:block
,它在调整大小时仍会在较大的视图中保持关闭状态。如果在其中单击某个项目,还需要关闭移动菜单。
尝试过这个,但没有任何运气
index.html
<div
ng-click="isMobileNavOpen = !isMobileNavOpen"
class="mobile_nav">
=
</div>
<nav id="main_nav" ng-init="isMobileNavOpen = true" ng-show="isMobileNavOpen">
<ul>
<li><a ui-sref="home">Home</a></li>
<li><a ui-sref="about">About</a></li>
</ul>
</nav>
style.css
// the button
.mobile_nav {
display: none;
}
@media all and (max-width: 300px) {
.mobile_nav {
display: block;
}
#main_nav {
display: none;
}
#main_nav li {
float: none;
margin-bottom 20px;
}
#main_nav a {
width: 100%;
}
}
找到完美的图书馆!
https://github.com/AnalogJ/matchmedia-ng
^ 这是解决我的问题的代码(需要 Angular 检测尺寸的方法)
var unregister = matchmedia.onPhone( function(mediaQueryList){
$scope.isPhone = mediaQueryList.matches;
});
必须使用覆盖来调整我的像素规格:
angular.module('myapp', ['matchmedia-ng']).config(['matchmediaProvider', function (matchmediaProvider) {
matchmediaProvider.rules.phone = "(max-width: 500px)";
matchmediaProvider.rules.desktop = "(max-width: 1500px)";
}]);
还必须继续使用 2 个不同的导航:/ 仍将尝试尝试使用它,看看我是否可以只使用 1 个导航:
<div class="mobile_nav noselect">
<div ng-click="isMobileNavOpen = !isMobileNavOpen" class="icon-menu"></div>
</div>
<nav id="main_nav">
<nav id="mobile_nav" ng-show="isMobileNavOpen">