【发布时间】:2021-08-16 20:35:16
【问题描述】:
我有许多包含许多行的表。我想最初只显示前三个表格行。当用户单击显示/隐藏链接时,所有隐藏的行都将被切换。到目前为止,我已经通过 CSS3 和 JavaScript (see Fiddle) 实现了这一点。
CSS(默认只显示三行):
.hide tr:nth-child(n+4) {
display:none;
}
JavaScript(切换上面的类以显示所有行):
function ShowHide() {
var tables = document.getElementsByClassName('foo');
for(i=0; i<tables.length; i++) {
tables[i].classList.toggle("hide");
}
}
是否可以使用 CSS3 的 transition 功能使行缓慢而不是立即出现?例如,淡入/淡出超过 2 秒?
我知道这可以在 JQuery 中轻松完成,但我正在寻找一个纯 CSS 解决方案。
【问题讨论】:
-
您无法转换
display属性 - stackoverflow.com/questions/3331353/… -
display不是可转换的属性。您可以将高度设置为 0 并隐藏溢出以“隐藏”这些行,但您也不能转换到height:auto,因此您要么必须使用指定的高度(只有在您知道有多高时才有意义)行将是预先的),或者至少在那时涉及 JS 以确定过渡到的必要目标高度。 -
您可以过渡 opacity css 属性,使项目慢慢呈现底层背景的颜色,这与褪色效果基本相同。然后,您可以添加一个
transitionend事件处理程序,以便在不透明度达到 0 时实际将显示设置为无,反之亦然。
标签: javascript html css