html - 将 div 的高度匹配到完整的滚动条高度

标签 html css

我的页面有 3 个主要 div:顶部菜单(静态高度)、主要内容(基于内容长度的可变高度)和侧边菜单

我希望侧边菜单的高度与主要内容的高度相匹配。主要内容是 min-height 100vh - topmenu 的高度,但大多数时候会高很多。我的问题是侧边菜单的内容通常要短得多。背景颜色和边框仅向下延伸以命中该内容。如果我尝试将高度设置为 100%,它会保持不变,而且我无法将其固定为静态高度,因为主要内容的高度是可变的。

如何使侧边菜单的高度与主要内容的高度相匹配。或者,将侧边菜单的高度设置为可滚动视口(viewport)的 100%。

我试过使用 Bootstrap 的网格系统进行设置,但还没有成功。

<div>
    <div class="container-fluid top-menu">...</div>
</div>
<div class="container-fluid">
    <div class="row">
        <div class="col-md-4 side-menu-view">...</div>
        <div class="col-md-20 main-content-view">...</div>
    </div>
</div>

CSS

.top-menu {
  height: 47px;
}

.side-menu-view {
  background-color: $background-light;
  border-right: solid 1px $border-light;      
  height: 100%;
}

.main-content-view {
  border-left: solid 1px $border-dark;
  height: 100%;
}

更新 包括jsfiddle https://jsfiddle.net/joshuaohana/DTcHh/12031/ 请务必将预览展开到全宽,以便您可以看到。问题是我想让红色背景向下延伸到右侧主要内容的整个高度

最佳答案

使用 flexbox , calc , 最小高度, ( unfortunately ) !important, and a media query ,我破解了我相信你正在寻找的解决方案:

.top-menu {
  height: 47px;
  background-color: blue;
}
.side-menu-view {
  background-color: red;
  border-right: solid 1px black;
}
.main-content-view {
  min-height: calc(100vh - 47px)!important;
}
@media(min-width: 992px) {
  .row {
    display: -ms-flexbox;
    display: -webkit-flex;
    display: flex;
  }
  .col {
    -webkit-flex: 1;
    -ms-flex: 1;
    flex: 1;
  }
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">

<!-- Optional theme -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap-theme.min.css">

<!-- Latest compiled and minified JavaScript -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>




<div>
  <div class="container-fluid top-menu">top menu</div>
</div>
<div class="container-fluid">
  <div class="row">
    <div class="col-md-2 side-menu-view">
      <p>content</p>
      <p>content</p>
      <p>content</p>
      <p>content</p>
    </div>
    <div class="col-md-10 main-content-view">
      <p>content</p>
      <p>content</p>
      <p>content</p>
      <p>content</p>
      <p>content</p>
      <p>content</p>
      <p>content</p>
      <p>content</p>
      <p>content</p>
      <p>content</p>
      <p>content</p>
      <p>content</p>
      <p>content</p>
      <p>content</p>
      <p>content</p>
      <p>content</p>
      <p>content</p>
      <p>content</p>
      <p>content</p>
      <p>content</p>
      <p>content</p>
      <p>content</p>
      <p>content</p>
      <p>content</p>
    </div>
  </div>
</div>

关于html - 将 div 的高度匹配到完整的滚动条高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32542621/

相关文章:

html - 嵌入式 DIV 元素的水平定位

html - Safari 无法识别负边距顶部

jquery - 在 IE7 上使用 jquery css 设置边框需要很长时间

html - 响应式设计中的字体大小和元视口(viewport)

html - 将图像与文本对齐

javascript - 在 blogger 中使用 Javascript 和 if/else 语句来隐藏某些元素

html - CSS 图像高度与奇怪的行为

html - 居中包含其他 div 的 div

javascript - 在三个不同的部分/div之间共享相同的ajax结果

CSS 动画,在 'block' 处滑入,在 'none' 处滑出