我有一个左菜单,我可以在其中添加或删除项目。在右侧有一个内容div,具有最小高度。
使用angular在左侧菜单中添加更多项目时,如果左侧菜单高于其最小高度,我希望内容div将其高度扩展到左侧菜单。
还有一点是我还想要ng-animate对内容div的下拉效果。
以下是小提琴链接:link
var app = angular.module('myApp', ['ngAnimate']);
app.controller('myCtrl', function($scope) {
$scope.items = ['foo', 'bar'];
var num = 0;
$scope.add = function() {
$scope.items.push(num);
num++;
}
});
#left {
width: 25%;
background-color: lightblue;
float: left;
}
#right {
width: 75%;
float: left;
background-color: lightgreen;
min-height: 200px
}
.item {
height: 20px;
opacity: 1;
transition: 0.5s;
}
.item.ng-enter {
opacity: 0;
height: 0;
}
.item.ng-enter-active {
height: 20px;
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.7/angular.min.js"></script>
<script src="https://code.angularjs.org/1.5.7/angular-animate.min.js"></script>
<div id="wrapper" ng-app="myApp" ng-controller="myCtrl">
<div id="left">
<p class="item" ng-repeat="item in items">
{{item}}
</p>
</div>
<div id="right">
<button ng-click="add()">add</button>
{{names}}
</div>
</div>
答案 0 :(得分:4)
不需要使用jQuery或ng-style
进行hacky DOM操作。只需将display: flex
添加到包装器:
#wrapper {
display: flex;
}
https://jsfiddle.net/babvqx8e/26/
使用flexbox还可以删除浮动:
#left {
width: 25%;
background-color: lightblue;
}
#right {
width: 75%;
background-color: lightgreen;
min-height: 200px
}
有关详细信息,请参阅此really nice guide to Flexbox。
答案 1 :(得分:1)
所以我会回答我的问题。我设法使用ng-style指令:
<div id="right" ng-style="{height: hgt+ 'px'}">
然后在控制器中:
$scope.hgt = $('#left').outerHeight() + 40;
答案 2 :(得分:0)
使用jQuery:
$("#right").css({'height': $("#left").outerHeight()});
它会将#right的高度设置为#left的外部高度。