angular-bootstrap 折叠 table 行动画过渡不流畅
angular-bootstrap collapse table row animation not transitioning smoothly
我 运行 遇到了 angular-bootstrap 折叠指令和 CSS 的问题。基本上,当您将指令 "collapse" 添加到 div 时,它工作正常。但是,当您尝试 expand/collapse 一个 table 行时,过渡效果似乎存在一些问题。
HTML:
<div ng-controller="dogCtrl">
<table class="table">
<thead>
<tr>
<th>Name</th>
<th>Breed</th>
</tr>
</thead>
<tbody>
<tr ng-repeat-start="dog in dogs">
<td><a href="#" ng-click="isCollapsed = !isCollapsed">{{dog.name}}</a></td>
<td>{{dog.breed}}</td>
</tr>
<tr collapse="isCollapsed" ng-repeat-end="">
<td colspan="3">
<h3>Pet details</h3>
<p>some details about this pet.</p>
</td>
</tr>
</tbody>
</table>
</div>
控制器:
var app = angular.module('dogApp', ['ui.bootstrap']);
app.controller('dogCtrl', function($scope) {
$scope.isCollapsed = true;
$scope.dogs = [
{
name: "Sparky",
breed: "Parson Russell Terrier"
}, {
name: "Shep",
breed: "German Shepard"
}
];
});
Codepen 示例:http://codepen.io/anon/pen/qEoOBq
因为 table 单元格的高度是“内容所需的最小高度”(如 CSS 2.1 规则)我想你不能为 table 设置动画行高。
可能的解决方法是将单元格的内容包装到 div
元素中,并为该容器设置动画。
这对我有用,但我没有进行大量测试:
<tr ng-repeat-end="">
<td colspan="2" style="padding: 0">
<div collapse="isCollapsed">
<h3>Pet details</h3>
<p>some details about this pet.</p>
</div>
</td>
</tr>
这是 table 行上 angular 动画的已知问题。
https://github.com/twbs/bootstrap/issues/12593
显示了最好的方法 here。
<tr ng-click="row1Open = !row1Open">
<td>Acrylic (Transparent)</td>
<td>{{row1Open}}</td>
<td>foo</td>
</tr>
<tr class="collapse-row">
<td>
<div collapse="!row1Open">
<div class="collapse-cell">
Detail Row {{demo.hello}}
</div>
</div>
</td>
<td>
<div collapse="!row1Open">
<div class="collapse-cell">
abc
</div>
</div>
</td>
<td>
<div collapse="!row1Open">
<div class="collapse-cell">
.90
</div>
</div>
</td>
</tr>
我 运行 遇到了 angular-bootstrap 折叠指令和 CSS 的问题。基本上,当您将指令 "collapse" 添加到 div 时,它工作正常。但是,当您尝试 expand/collapse 一个 table 行时,过渡效果似乎存在一些问题。
HTML:
<div ng-controller="dogCtrl">
<table class="table">
<thead>
<tr>
<th>Name</th>
<th>Breed</th>
</tr>
</thead>
<tbody>
<tr ng-repeat-start="dog in dogs">
<td><a href="#" ng-click="isCollapsed = !isCollapsed">{{dog.name}}</a></td>
<td>{{dog.breed}}</td>
</tr>
<tr collapse="isCollapsed" ng-repeat-end="">
<td colspan="3">
<h3>Pet details</h3>
<p>some details about this pet.</p>
</td>
</tr>
</tbody>
</table>
</div>
控制器:
var app = angular.module('dogApp', ['ui.bootstrap']);
app.controller('dogCtrl', function($scope) {
$scope.isCollapsed = true;
$scope.dogs = [
{
name: "Sparky",
breed: "Parson Russell Terrier"
}, {
name: "Shep",
breed: "German Shepard"
}
];
});
Codepen 示例:http://codepen.io/anon/pen/qEoOBq
因为 table 单元格的高度是“内容所需的最小高度”(如 CSS 2.1 规则)我想你不能为 table 设置动画行高。
可能的解决方法是将单元格的内容包装到 div
元素中,并为该容器设置动画。
这对我有用,但我没有进行大量测试:
<tr ng-repeat-end="">
<td colspan="2" style="padding: 0">
<div collapse="isCollapsed">
<h3>Pet details</h3>
<p>some details about this pet.</p>
</div>
</td>
</tr>
这是 table 行上 angular 动画的已知问题。 https://github.com/twbs/bootstrap/issues/12593
显示了最好的方法 here。
<tr ng-click="row1Open = !row1Open">
<td>Acrylic (Transparent)</td>
<td>{{row1Open}}</td>
<td>foo</td>
</tr>
<tr class="collapse-row">
<td>
<div collapse="!row1Open">
<div class="collapse-cell">
Detail Row {{demo.hello}}
</div>
</div>
</td>
<td>
<div collapse="!row1Open">
<div class="collapse-cell">
abc
</div>
</div>
</td>
<td>
<div collapse="!row1Open">
<div class="collapse-cell">
.90
</div>
</div>
</td>
</tr>