【发布时间】:2016-05-25 13:25:49
【问题描述】:
我有一个带有max-height of 0 的元素。我想将其转换为无最大高度自动或无;任何使它根据存在的元素数量扩展的东西。 我还不想使用 JS 和 flex。
这是 jsfiddle:https://jsfiddle.net/m9pd8bjh/19/
HTML:
<nav>
<input type="checkbox" id="menu-main-checkbox" hidden>
<label class="toggler" for="menu-main-checkbox">Menu</label>
<div class="hide toggleable">
<ul>
<li>Home</li>
<li>Sample Page</li>
</ul>
</div>
</nav>
CSS:
.hide {
visibility: hidden;
overflow: hidden;
max-height: 0;
}
input[type=checkbox]:checked~.toggleable {
visibility: visible;
max-height: 68px;
}
.toggleable {
transition: visibility 1.5s ease-in-out, max-height .75s ease-in-out;
}
.toggler {
cursor: pointer
}
nav {
background: #e74c3c;
}
当我将 max-height 设置为 68px(适合两个列表项的高度)时,它工作得很好,但是当我将 max-height 设置为 500px 时,例如,为将来的列表项留出空间,转换需要时间从 500 到 0,使其在列表项再次消失之前产生延迟。
我不希望使用缩放,因为它会使它复杂化,我必须想出一个解决方案来解决它下面的间距。它保持元素下方的间距,并在它打开时保留它。
【问题讨论】:
-
@dippas 可能重复的解决方案说将高度设置为一个大数字,这就是我正在做的。除此之外,我只需要一个解决方案。问题在于它如何转换,而不是它是否有效。如果不够清楚,请询问我的问题有什么令人困惑的地方,或者随时编辑以使其更易于理解。
-
你有42个答案,查一下,测试一下,我第一眼看到一个用
scale -
使用小于 500 的数字,所以。
-
@Shaggy 如果大于实际高度,仍然会稍有延迟。尝试关闭菜单,您会看到我想要了解的内容。
标签: css css-transitions