如何使用Angular-Material获得全高度sidenav

Jam*_*mes 29 angularjs material-design

我正在使用Angular-Material并实现了SideNav菜单.当屏幕尺寸较小时,菜单将被隐藏,当单击菜单切换按钮时,菜单将从左侧滑出,整页高度.当屏幕较大时,菜单显示在左侧,但不在整页高度.

如何使固定菜单显示为整页高度.我一直在玩css和其他md属性,但只是无法找出方法.

<div ng-controller="appCtrl" layout="vertical" layout-fill>

<md-toolbar class="md.medium-tall app-toolbar">
    <div class="md-toolbar-tools" ng-click="toggleMenu()">
        <button class="menu-icon" hide-sm aria-label="Toggle Menu">
            <md-icon icon="img/icons/ic_menu_24px.svg">
                <object class="md-icon" data="img/icons/ic_menu_24px.svg"></object>
            </md-icon>
        </button>
        <h2>
            <span>Dev.Material</span>
        </h2>
    </div>
</md-toolbar>

<section layout="horizontal" flex>
    <md-sidenav class="md-sidenav-left md-whiteframe-z2" component-id="menu" is-locked-open="$media('sm')">

        <md-toolbar md-theme="purple">
            <h1 class="md-toolbar-tools">Sidenav Left</h1>
        </md-toolbar>

        <md-content class="md-padding" ng-controller="menuCtrl">
            <p>
                This sidenav is locked open on your device. To go back to the default behavior,
                narrow your display.
            </p>
        </md-content>
    </md-sidenav>

    <md-content flex class="md-padding">
        Some content !!
    </md-content>
Run Code Online (Sandbox Code Playgroud)

和控制器:

(function () { 
'use strict';

var controllerId = 'appCtrl';
angular.module('app').controller(controllerId,
    ['$scope', '$timeout', '$mdSidenav', appCtrl]);

function appCtrl($scope, $timeout, $mdSidenav) {
    var vm = this;

    $scope.toggleMenu = function() {
        $mdSidenav('menu').toggle();
    };
};    
})();

(function () { 
'use strict';

var controllerId = 'menuCtrl';
angular.module('app').controller(controllerId,
    ['$scope', '$timeout', '$mdSidenav', menuCtrl]);

function menuCtrl($scope, $timeout, $mdSidenav) {
    var vm = this;

    $scope.close = function() {
        $mdSidenav('menu').close();
    };
};
})();
Run Code Online (Sandbox Code Playgroud)

小智 25

我对角度材料0.6.0 rc1有完全相同的问题.(我使用了演示站点的代码).

问题不是来自角度材料代码,而是来自页面的父css容器,它不是全高.

您的页面应该具有以下结构:

<ui-view class="ng-scope">
    <div ng-controller="appCtrl" layout="vertical" layout-fill>
        ... your md sidenav code here ...
    </div>
</ui-view>
Run Code Online (Sandbox Code Playgroud)

问题来自ng-scope类,它不是全高度.在我的情况下,我只是从演示站点复制/通过代码并添加此我的cutom css文件

.ng-scope { height: 100%; }
Run Code Online (Sandbox Code Playgroud)

结果是全高度sidenav在锁定打开和解锁模式下都能正常工作.

  • 截至0.8.3(今天):https://material.angularjs.org/#/layout/container(即行/列) (8认同)

ng-*_*ren 18

这对我有用......

1)将sidenav包装在一个布局="垂直"的div中,如此...

<div ng-include="'scripts/shared/sidenav/sidenav.html'" layout="vertical"></div>
Run Code Online (Sandbox Code Playgroud)

2)在sidenav中添加"flex",使其弯曲以填满整页高度.

<md-sidenav class="md-sidenav-left md-whiteframe-z2" component-id="menu" is-locked-open="$mdMedia('sm')" flex>
Run Code Online (Sandbox Code Playgroud)


phi*_*lgr 12

我通过在sidenav中添加一个类来修复同样的问题

position: fixed;
Run Code Online (Sandbox Code Playgroud)

  • `md-sidenav {position:fixed}`和`md-backdrop.md-opaque {position:fixed }`对我来说很简单.谢谢@phil_Igr (3认同)

phi*_*hil 5

我有一个类似的问题。设置样式“高度:100vh;” 为我工作。你也可以使用一个类。

<div layout="column" style="height:100vh;"></div>
Run Code Online (Sandbox Code Playgroud)

也可以使用 layout="vertical" - 它在我的上下文中没有任何显着影响。