gpt4 book ai didi

css - 最大高度从 0 到自动或无?

转载 作者:太空宇宙 更新时间:2023-11-04 10:13:05 26 4
gpt4 key购买 nike

我有一个 max-height 为 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 时,例如,为 future 的列表项留出空间,过渡需要时间从 500 到 0,使其在列表项再次消失之前有延迟。

我不想使用缩放,因为它会使它复杂化,我必须想出一个解决方案来解决它下面的间距。它保持元素下方的间距,并在打开时保留它。

最佳答案

我发现的一种解决方法是使用带@keyframes 的动画。请记住添加供应商前缀。

浏览器对此的支持如下:Firefox 5+、IE 10+、Chrome、Safari 4+、Opera 12+

我将您的 CSS 修改为:

 .hide {
visibility: hidden;
overflow: hidden;
max-height: 0;
}

input[type=checkbox]:checked~.toggleable {
visibility: visible;
animation: height1 .75s forwards;
}
input[type=checkbox]:not(:checked)~.toggleable {
visibility: visible;
animation: height2 .50s forwards;
}

.toggleable {
transition: visibility 1.5s ease-in-out;
}

.toggler {
cursor: pointer
}

nav {
background: #e74c3c;
}
@keyframes height1 {
0% { max-height: 0; }
100% { max-height: 500px; }
}
@keyframes height2 {
0% { max-height: 500px; }
100% { max-height: 0; }
}

如果这样使用,再次点击时的延迟会更小。

这是更新后的 jsfiddle:https://jsfiddle.net/m9pd8bjh/25/

关于css - 最大高度从 0 到自动或无?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37438627/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com