javascript - 如何让一个相对定位的 child 获得所有 parent 的高度

标签 javascript jquery html css

我有这个布局

body, html {
  height: 90%;
}
#content{
  width: 100%;
  height: 100%;
}

#sidebar {
  position: relative;
  width: 200px;
  float: left;
  height: 100%;
  background-color: green;
}
#sidebar-content {
  height: 120px;
  background-color: blue;
  
}
#sidebar-footer {
  position: absolute;
  bottom: 0;
  height: 50px;
  width: 100%;
  background-color: black;
}

#main {
  position: relative;
  overflow: hidden;
  background-color: red;
}
#main-content {
   height: 750px;
}
<div id="content">
  <div id="sidebar">
    <div id="sidebar-content">
    </div>
    <div id="sidebar-footer">
    </div>
  </div>
  <div id="main">
    <div id="main-content">
    </div>
  </div>  
</div>

如果侧边栏的高度低于#main 的高度,我需要侧边栏占据所有可用高度。将侧边栏位置设置为绝对位置可以解决此问题,但会增加更多错误,是否有解决方案让相对定位的子项获取所有父项的高度而不以像素为单位指定父项的高度?

正如您在 fiddle 中看到的那样,如果#main 超出侧边栏的宽度,则侧边栏会更短,但它需要填满所有高度。

最佳答案

CSS Flexbox 确实解决了您的问题,如果您不必支持旧版浏览器,它就是完美的答案。

基本上,只需将 display: flex 添加到容器中即可解决此问题。

浏览器以多种方式支持 flexbox,确保检查该 Pen 的编译 CSS 以获取所有浏览器前缀等。

Link to CodePen

关于javascript - 如何让一个相对定位的 child 获得所有 parent 的高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30297909/

相关文章:

javascript - 没有得到名称属性

javascript - 单击单选按钮时,显示/隐藏具有动态变化的 ID 或类的 div

java - 将 HTML 项目符号转换为纯文本

html - 样式化多个元素 CSS 一个标签

javascript - For 循环返回 undefined variable

javascript - Bootstrap multiselect - 在单击取消选择/取消选中所有选项时触发事件 'onSelectAll' 或 'onDeselectAll'(需要的最佳方式)

javascript - 要删除的 jQuery 弹出窗口

javascript - document.write(X) 与 document.getElementById ("").innerHTML = X 之间的区别

javascript - 使用 Ajax 的 Select2 不发送请求

html - 如何在表行上使用 nth-child(odd) 但希望某些行不受 css 规则的约束?