gpt4 book ai didi

javascript - 如何在 flexbox 中按比例调整可折叠元素

转载 作者:行者123 更新时间:2023-12-04 07:19:26 25 4
gpt4 key购买 nike

我有一个用 flexbox 构建的 3 面板页面。它看起来像这样:
enter image description here
如果我展开第二部分,第一部分将折叠,看起来像这样:
enter image description here
这很棒,但我希望它在第二部分打开时不会自动关闭第一部分。理想情况下,第一和第二部分占据相同的高度 (50/50)。

<ul>
<li class="active">
<div class="wrap">
<a href="#">open1</a>
<div>text 1</div>
</div>
</li>
<li>
<div class="wrap">
<a href="#">open2</a>
<div>text 2</div>
</div>
</li>
<li>
<div class="wrap">
<a href="#">open3</a>
<div>text 3</div>
</div>
</li>
</ul>
* {
box-sizing: border-box;
}
html, body {
height: 100%;
margin: 0;
}
ul {
list-style: none;
margin: 0;
padding: 0;
display: flex;
height: 100%;
flex-direction: column;
}

ul li {
background:gray;
padding:10px 30px;
border-top: 2px solid #fff0ed;
}
ul li:first-child{
border-top: none;
}

ul a {
background: green;
display: block;
padding: 5px;
}

ul .wrap {
background: #000;
display: flex;
flex-direction: column;
width: 100%;
min-height: 100%;
color: #fff;
}

ul .wrap div {
display: none;
padding: 20px;
}

ul li.active {
display: flex;
flex: 1 1 auto;
}

ul li.active .wrap div {
display: block;
}
我怎么能做到这一点?
CODEPEN here

最佳答案

您可以使用 toggleClass如果单击的元素已经存在,它将删除类,否则它将添加该类。

$('li').on('click', function() {
$(this).toggleClass('active')
})
* {
box-sizing: border-box;
}

html,
body {
height: 100%;
margin: 0;
}

ul {
list-style: none;
margin: 0;
padding: 0;
display: flex;
height: 100%;
flex-direction: column;
}

ul li {
background: gray;
padding: 10px 30px;
border-top: 2px solid #fff0ed;
}

ul li:first-child {
border-top: none;
}

ul a {
background: green;
display: block;
padding: 5px;
}

ul .wrap {
background: #000;
display: flex;
flex-direction: column;
width: 100%;
min-height: 100%;
color: #fff;
}

ul .wrap div {
display: none;
padding: 20px;
}

ul li.active {
display: flex;
flex: 1 1 auto;
}

ul li.active .wrap div {
display: block;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul>
<li class="active">
<div class="wrap">
<a href="#">open1</a>
<div>text 1</div>
</div>
</li>
<li>
<div class="wrap">
<a href="#">open2</a>
<div>text 2</div>
</div>
</li>
<li>
<div class="wrap">
<a href="#">open3</a>
<div>text 3</div>
</div>
</li>
</ul>

关于javascript - 如何在 flexbox 中按比例调整可折叠元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68594614/

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