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

标签 javascript html css

如何设置 #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/

相关文章:

javascript - Node/方法重写在 PUT 上给出错误

javascript - 以这种方式覆盖 React 状态数组好吗?

javascript - 如何使用 D3.js 将返回函数连接到 SVG 转换属性

javascript - HighChart 图表未在邮件中显示

html - 如果文档的字体大小以 em 指定,那么 "em"是什么?

html - 在响应容器中居中缩略图网格

html - CSS 动画、位置

javascript - 使用 Require.js 设置和获取全局变量

javascript - 在 ng-repeat 中使用 ng-if 和 ng-switch 失败

css - Shiny 的应用程序作为功能,在哪里放置 www/文件夹、CSS、JS