【发布时间】:2021-12-07 14:46:44
【问题描述】:
我有一个容器作为最大高度为 30 像素的可折叠下拉列表的标题。我正在切换一个“.open”类,在 Javascript 中将最大高度更改为 30000px onClick。
我正在尝试添加一个 CSS 过渡,以通过 transition: 1s; 使其更加流畅。到容器类。产生的效果很笨拙并且似乎是错误的:在超时等于 css 元素中的 1s 之后,div 将立即折叠(没有缓入/缓出)。 IE。如果我添加transition: 5s;,在5s之前页面上不会发生任何事情,然后div会自动关闭。
希望这是有道理的,谢谢!
-- 为清楚起见共享代码:
html:
<section class="project">
<div class="project-head">
imgs/text with flexbox/grids etc
</div>
</section>
css:
section.project {
max-height: 30px;
overflow: hidden;
transition: all 0.5s ease-in-out;
}
.project-head {
display: grid;
height: 50px;
width: 95vw;
transition: .01s;
}
.open {
max-height: 100000px !important;
}
js:
document.querySelectorAll('.project-head').forEach(project => {
project.addEventListener('click', function () {
this.parentElement.classList.toggle("open");
});
})
【问题讨论】:
-
您要将
max-height设置为.project-head还是.project?尝试设置height而不是max-height。您可以在0和auto之间切换height -
意图是通过子元素
.project-head设置.project的最大高度(因为大部分.project在点击之前被隐藏)。切换height而不是max-height有效,但会产生相同的无过渡效果。 -
尝试在
0和auto之间切换height -
试过这个 - 似乎不可能在 CSS 中转换到
height: auto? stackoverflow.com/questions/3508605/… -
我更新了,再看看
标签: javascript html css css-transitions