私はブートストラップとangularJSが初めてです。しかし、上部と左側のページが静的で動かないページを作成しています。<nav class="navbar navbar-default navbar-fixed-top
ブートストラップからヘッダーまで使用しposition: fixed
、ページの左側の部分を静的にします。
問題は、ナビバーが動的に作成され、高さがデータベースからのデータに依存することです (これらはフィルターです)。その結果、ヘッダーがあり、ナビゲーションバーがカバーしているためコンテンツの一部のデータが表示されません。どのように解決しますか?多分navbarは良いアプローチではありません。
1331 次
1 に答える
1
これを 2 つのディレクティブで行います。要素(あなたの場合はnavbar)の高さを監視するものと、新しい高さに応じてcssパディング(または必要なもの)を変更するもの。
.directive('getHeight', function() {
var addPadding = 10;
return {
link: function(scope, element, attrs) {
scope.$watch( 'watchedHeight', function(newHeight) {
element.css({
'padding-top': newHeight+addPadding+'px'
});
});
}
}
})
.directive('watchHeight', function($rootScope) {
return {
link: function(scope, element, attrs) {
scope.$watch(function() {
scope.watchedHeight = element[0].offsetHeight;
});
angular.element(window).on('resize', function() {
$rootScope.$apply(function() {
scope.watchedHeight = element[0].offsetHeight;
})
});
}
}
});
HTML:
<body ng-app="myApp" ng-controller="TestCtrl" get-height="">
<nav class="navbar navbar-default navbar-fixed-top" watch-height="">
<div class="container">
<p class="navbar-text">Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy</p>
</div>
</nav>
<div class="container">
Lorem ipsum dolor sit amet...
</div>
</body>
ウィンドウのサイズ変更も監視していますが、あなたの場合に必要かどうかはわかりません。
于 2015-07-22T08:40:13.920 に答える