点击动画折叠整个表格

Posted

技术标签:

【中文标题】点击动画折叠整个表格【英文标题】:Collapse entire table on click with animation 【发布时间】:2016-07-03 02:59:57 【问题描述】:

我有一个表格,我希望能够单击表格标题行,这将折叠表格的其余部分,只留下标题行(并展开回来)。经过一番努力,我能够让桌子在点击时实际改变它的高度,但无法让动画触发。这是我到目前为止的css:

table 
  height: 100%;
  display: block;
  overflow: hidden;


.collapsed 
  animation-name: collapse;
  animation-duration: 2s;


@keyframes collapse 
  from  height: 100%; 
  to  height: 40px; 


/* This is the javascript that is trigger on click */
this.refs.ruleslisttable.classList.toggle("ruleSetInfo__rule-list-table--collapsed");

当我在桌子上切换班级时,上面的代码甚至不会触发新的高度,但我一直在尝试在那里获得动画。

【问题讨论】:

【参考方案1】:

你真的不需要用keyframe 动画来做。

您只需将transition 规则添加到table 元素即可,如下所示:

table 
  height: 100%;
  display: block;
  overflow: hidden;
  transition: height 2s ease-in;


.collapsed 
    height: 40px;

这样做的目的是告诉浏览器使用ease-in 函数将tableheight 从100% 转换为40px,反之亦然,持续2 秒。

有关更多信息,您可以在MDN阅读有关转换属性的条目

干杯

更新:

在您当前的设置中,我想table 元素的父元素没有严格定义的高度。

基于百分比的高度的工作方式是这样的:元素获取其父高度的 100%。

然而当你没有为父母指定高度时,无论是pxemremvh 或者你有什么,@987654337 的孩子@ 就像拥有height: auto。 Reference

这是真正的问题:您不能从auto 转换为任何其他值,例如%px 等。

您只能从一个已定义 值 (!== auto) 转换为任何其他已定义值。例如从pxrem

这就是为什么你的过渡不起作用。

见this fiddle 我做的。调整#cont 元素的高度,看看会发生什么。

因此,简而言之:您必须为表格指定严格的高度,或者,如果您想保持基于百分比,请为其父元素指定严格的高度。

【讨论】:

很遗憾,当我点击 CSS 时,会有 2 秒的延迟,然后高度会发生变化。它实际上并没有缓解...:/ 嗯。您能否提供 html 或示例 HTML 以及您正在使用的一些 JS? 当然,虽然不多。它只是在 DOM 元素上切换类。所以高度成功改变,但没有动画。 啊,好的。知道了。您不能从基于百分比的值转换为任何其他单位的值。我会用更多信息更新我的答案,请给我 5 分钟的时间来写。 更新了答案,大家可以去看看。

以上是关于点击动画折叠整个表格的主要内容,如果未能解决你的问题,请参考以下文章

如何在表格上创建圆角并为整个表格和列保留表格边框? [复制]

使用显示/减少按钮展开/折叠表格视图单元格

iView中表格(Table)添加点击行展开扩展说明的功能

如何为表格的每一行创建展开/折叠功能?角6

CSS边框半径和边框折叠[重复]

调整单元格大小时如何使表格视图动画平滑