AngularJS动画在表格中交换行

Posted

技术标签:

【中文标题】AngularJS动画在表格中交换行【英文标题】:AngularJS Animations Swap lines in table 【发布时间】:2015-10-12 00:20:34 【问题描述】:

我正在尝试在我的应用中添加动画。这是一个带有行的表格,每一行都可以修改/删除或移动。 这是诀窍,我可以在表格中的行之间移动项目,但我无法在此动作上放置动画(反转,交换)。 我根据我发现的关于该主题的帖子创建了一个 Fiddle,但这个是 div 而不是 table。我已经修改它以匹配我的情况。

=> 原始小提琴(作品): https://jsfiddle.net/2begw155/

<div ng-repeat="person in people" class="person">
   person.first person.last &nbsp;
   <button ng-click="personUp($index)">up</button>
   <button ng-click="personDown($index)">down</button>
   <button ng-click="personRemove($index)">remove</button>
</div>

=> 修改后的带表(不工作): https://jsfiddle.net/d81dd0tk/6/

<table>
    <tr ng-repeat="person in people" class="person">
        <td>person.first person.last</td>
        <td><button ng-click="personUp($index)" ng-hide="$index === 0">up</button></td>
        <td><button ng-click="personDown($index)" ng-hide="$index === people.length-1">down</button></td>
        <td><button ng-click="personRemove($index)">remove</button></td>
    </tr>
</table>

我想保留一个表格>tr>td 结构并且由于 UX 设计没有宽度/高度。如果有人有想法,那就太好了。

28/07 编辑:一直在努力使其工作,在 Firefox 上成功测试!所以这是一个 pb 的 webkit 转换...

编辑 29/07:创建新的 Fiddle,在 Firefox 上工作,在 Chrome 上没有过渡。不确定这是一个 webkit 问题,因为其他转换可以工作并且 -webkit 不会改变任何东西。我读到了一些关于 chrome 只对定义的属性应用转换的内容。在我的情况下 .person 没有***属性,但即使我设置了这个属性,它也根本不起作用。 => 新小提琴https://jsfiddle.net/d81dd0tk/7/

【问题讨论】:

【参考方案1】:

我不太确定你应该怎么做,但是如果你把你的 tr 转换成一个像

这样的块
.person 
     transition: all 0.5s ease;
     display:block;

这应该可以,但它不保留 table-row 的属性...也许您必须为 td 指定宽度。

希望这能有所帮助。

【讨论】:

以上是关于AngularJS动画在表格中交换行的主要内容,如果未能解决你的问题,请参考以下文章

在angularjs中对表格的行进行排序或重新排列(拖放)

使用AngularJS在div元素中显示表格的行

删除带有动画的表格行

将表格行从一个表格移动到另一个表格 - AngularJS

Angularjs - 检查单选按钮时显示/隐藏表格行

用反应动画表格行