html - 点击动画即可折叠整个表格

标签 html css animation reactjs

我有一个表格,我希望能够单击表格标题行,这将折叠表格的其余部分,仅留下标题行(并展开回来)。经过一番努力,我能够让表格在单击时实际改变其高度,但无法触发动画。这是我迄今为止拥有的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");

当我在 table 上切换类时,上面的代码甚至不会触发新的高度,但我一直在尝试在其中获取动画。

最佳答案

您实际上并不需要使用关键帧动画来做到这一点。

您只需向 table 元素添加 transition 规则即可做到这一点,如下所示:

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

.collapsed {
    height: 40px;
}

它的作用是告诉浏览器在 2 秒内将 tableheight 从 100% 转换为 40px,反之亦然,并显示 ease-in功能

有关更多信息,您可以阅读有关过渡属性的条目 MDN

干杯

更新:

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

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

但是当您没有指定父级的高度时,无论是 pxemrem >、vh 或者什么,具有 height: 100% 的 child 就像具有 height: auto 一样。 Reference

这里是实际的问题:您无法从 auto 转换为任何其他值,例如 %px 等。

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

这就是您的转换不起作用的原因。

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

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

关于html - 点击动画即可折叠整个表格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36049096/

相关文章:

javascript - 突出显示 TextArea 中的一段字符串

javascript - 将 'Reveal All' 按钮替换为 'Reveal Less' onClick?

asp.net - <div> 标签中的标签控件左对齐

html - SVG - 可以在一侧添加 stroke-dasharray 渐变或透明形式

android - 更改 android View 的位置似乎会更改动画枢轴

html - XAMPP(LAMPP) 的 phpmyadmin 抛出错误 #2002

php - HTML php 预选选项值加载到下拉列表中

jquery - 带有 clone(true) 单击的克隆元素不起作用

html - 用 css 在悬停时摇动图像?

ios - UIView 动画 - 奇怪的行为(Swift)