Я понимаю, что реализация Angular Материал - это незавершенная работа, но я потратил некоторое время этим утром, пытаясь ознакомиться с ней. Тем не менее, я действительно стараюсь, чтобы концепции, показанные в демонстрационных записях, работали на отдельном сайте.
Кажется, что, когда директивы типа <md-toolbar>
и <md-content>
используются в контейнерах с фиксированной высотой, они отлично работают. Я изо всех сил пытаюсь бросить их внутри тега <body
и иметь возможность иметь липкий макет как в этом примере.
Я пробовал много вариантов, но вот один пример, который не работает, когда содержимое удаляется из DOM. Когда контент там, он растет за пределами области просмотра, а нижний колонтитул помещается впоследствии, как и следовало ожидать. В последних версиях Chrome и Firefox этот пример поддерживает нижний колонтитул внизу, когда содержимое удаляется, но в IE это просто не работает вообще. В IE нижний колонтитул плавает чуть ниже заголовка независимо от того, отображается ли основное содержимое или нет.
DEMO: http://codepen.io/sstorie/pen/xbGgqb
<body ng-app="materialApp" layou-fill layout='column'>
<div ng-controller="AppCtrl" layout='column' flex>
<md-toolbar class='md-medium-tall'>
<div class="md-toolbar-tools">
<span>Fixed to Top</span>
<span flex></span>
<md-button class="md-raised" ng-click="toggleContent(!displayContent)">toggle content</md-button>
</div>
</md-toolbar>
<main class='md-padding' layout="row" flex>
<div flex>
<md-card ng-if="displayContent" ng-repeat = "card in cards">
{{$index}}
{{card.title}}
{{card.text}}
</md-card>
</div>
<div flex>
<md-card ng-if="displayContent" ng-repeat = "card in cards">
{{$index}}
{{card.title}}
{{card.text}}
</md-card>
</div>
</main>
<md-toolbar class="md-medium-tall">
<div layout="row" layout-align="center center" flex>
<span>FOOTER</span>
</div>
</md-toolbar>
</div>
</body>
JavaScript:
angular.module('materialApp', ['ngMaterial'])
.controller('AppCtrl', function($scope) {
$scope.cards = [
{text: 'Bla bla bla bla bla bla bla ',
title: 'Bla' },
...repeat 10 times...
];
$scope.displayContent = true;
$scope.toggleContent = function(showContent) { $scope.displayContent = showContent; };
});
CSS
body {
min-height: 100%;
height: auto !important;
height: 100%;
}
Я определенно не гуру CSS, но похоже, что это должно быть легко сделать с вариантами макета в angular -материале, поэтому я надеюсь, что я действительно пропустил что-то очевидное здесь.