html - Flexbox 模型上的左侧菜单不会动态扩展其高度

标签 html css flexbox

我有一个带有右侧主体的静态左列。页面加载时,左侧菜单正确适合浏览器。如果我调整浏览器的大小,它仍然可以很好地适应。但是,当右列的主体扩展超过左列时,左侧菜单不会随之扩展(具有动态内容)。

示例:https://jsfiddle.net/037exh8n/

HTML

<body>
<div class="sidebar">
  <ul>
    <li>Menu Item</li>
    <li>Menu Item</li>
    <li>Menu Item</li>
    <li>Menu Item</li>
    <li>Menu Item</li>
  </ul>
</div>
<div class="main">
   <div class="content"></div>
</div>

CSS

html,body {
  height: 100%;
  background-color: #7F7E7E;
  color: #000000;
  display: flex;
  flex-direction: row;
  padding: 0;
  margin : 0;
}

.sidebar {
  height: 100%;
  flex: 0 0 250px;
  background-color: #000;
  padding-left: 20px;
  color:white;
}
.main {
  flex: 1;
}

如果单击该按钮,您可以看到左侧菜单不会随内容展开。

我错过了什么?我注意到,如果我进入 Chrome 中的调试器,html 主体高度永远不会更新。

谢谢!

最佳答案

它没有按预期工作,因为您显式地将 html/body 元素的高度设置为 100%,然后您将左侧菜单 .sidebar 元素的高度也设置为 100%

这样做时,左侧菜单的高度不会扩展超过100%(即使您添加更多内容,就像您的情况一样)。您似乎想将这些元素的 min-height 改为 100%。这样做时,高度将至少为 100%,然后根据内容进行扩展。

Updated Example

html, body {
  min-height: 100%;
  background-color: #7F7E7E;
  color: #000;
  display: flex;
  flex-direction: row;
  margin: 0;
}

旁注:自 .sidebar 起,您只需在 html/body 元素上设置 min-height code> 元素是一个 Flexbox 子元素,它将扩展以匹配父元素的高度,在本例中,body 元素的最小高度为 100%。只需完全省略 .sidebar 元素的高度,就像上面的链接示例一样。


或者,您也可以只使用视口(viewport)百分比单位,并直接在 .sidebar 元素上设置 min-height100vh:

Updated Example

.sidebar {
  min-height: 100vh;
  flex: 0 0 250px;
}

关于html - Flexbox 模型上的左侧菜单不会动态扩展其高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35139947/

相关文章:

html - 内容高度未知时隐藏水平滚动条

flexbox 回退到在旧浏览器中显示表格

jQuery 隐藏/显示/切换/清空

javascript - 通过单击列表更改 div 内容?

css - 我怎样才能使一个在另一个上索引的 div 框不阻止第二个的悬停属性?

css - Flexbox 列子项的高度 100%

html - Bootstrap 将一张图片放在另一张图片上?

html - 如何使用 CSS 仅将 HTML 选项元素的首字母大写?

html - CSS鼠标悬停按钮颜色变化

html - 选择选项CSS