gpt4 book ai didi

javascript - 如果隐藏另一个 div,则 div 宽度调整为 100%

转载 作者:太空狗 更新时间:2023-10-29 14:38:46 24 4
gpt4 key购买 nike

如何设置 #leftdiv 的宽度当 #rightdiv 时变为 100%被隐藏,当点击按钮时,<div> s应该是挨着的。

我已经得到了 <div>单击按钮时彼此相邻,但我想展开 #leftdiv#rightdiv 时变为 100%是隐藏的。

function toggleSideBar() {		
var div = document.getElementById('rightdiv');
if (div.style.display !== 'none') {
div.style.display = 'none';
} else {
div.style.display = 'block';
}
};
#leftdiv
{
border: solid medium thick;
float: left;
display: inline-block;
background-color: #ffc;
/*border: 1px solid red;*/
}

#rightdiv
{
width: 50%;
border: solid medium thick;
background-color: #ffa;
display: none;
float:right;
}
<input type="button" id="btn" value="toggle" onclick="toggleSideBar()" />
<div id="main-content">
<div id="leftdiv">selectable</div>
<div id="rightdiv">right panel</div>
</div>`

最佳答案

我会为此使用 flex box:

HTML

<input type="button" id="btn" value="toggle" onclick="toggleSideBar()" />
<div id="main-content">
<div id="leftdiv">selectable</div>
<div id="rightdiv">right panel</div>
</div>

CSS

#main-content {
display: flex;
flex-flow: row nowrap;
}

#leftdiv {
background-color: #ffc;
flex: 1 1 auto;
border: 1px solid red;
}

#rightdiv {
flex: 1 1 auto;
background-color: #ffa;
display: none;
border: 1px solid green;
}

JS

function toggleSideBar() {  
var div = document.getElementById('rightdiv');

if (div.style.display !== 'none') {
div.style.display = 'none';
} else {
div.style.display = 'block';
}
};

您的示例未按预期运行的主要原因是使用了float。 float 使元素仅占据其内容所需的空间。使用 float ,您必须对左侧容器使用 width:100% 来解决此问题。要使其从 50% 宽度动态切换到 100% 宽度,还需要在切换函数中在这两者之间切换样式。

使用 flexbox 所有这些都不再是必需的,因为它的子元素会自动按照你想要的方向排序,在本例中是一行。为两个容器设置 flex: 1 1 auto; 使它们均匀地增长和收缩以占据它们可以获得的所有空间。 (flex: 1 0 auto; 也适用于此,因为收缩行为在此示例中没有任何区别。)

关于javascript - 如果隐藏另一个 div,则 div 宽度调整为 100%,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30249753/

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