我想实现一个布局,其中有两个列适合屏幕的高度.

  • 左列有两行,每行占可见可用高度的50%(没有固定高度,应具有响应性).如果每一行的内容大于50%,则它应该是可滚动的.
  • 右栏采用完全高度.如果其内容跨越可见屏幕,则应显示滚动条.

The current behaviour of my prototype is the following. The right side is working. However I need some help for the left side, because the first row takes more space than the second row: enter image description here

The desired layout should look like the following: enter image description here

推荐答案

如果要将容器设置为屏幕高度,可以将.left.right设置为height: 100vh;

stackblitz example

编辑

您可以使用弹性框来包含左侧,并使其居中并包含元素.我已经将min-height减少到100px,以使演示在预览中工作得更好,但它很容易更改为其他大小.

.ctnr {
  display: grid;
  grid-template-rows: auto minmax(0, 1fr) auto;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  height: 100vh;
  grid-template-areas: "header header" 
                         "nav main" 
                       "footer footer";
}

h3 {
  margin-bottom: 0;
}

header {
  grid-area: header;
  background: turquoise;
}

nav {
  grid-area: nav;
  background: grey;
  display: flex;
  flex-direction: column;
  gap: 1rem;
  min-height: 100px;
}

.scroll-left {
  overflow: scroll;
  flex: 1;
}

main {
  grid-area: main;
  background: orange;
  overflow: scroll;
  min-height: 100px;
}

body {
  margin: 0;
}
<div class="ctnr">
  <header>
    <h3>header</h3>
    <div>some content</div>
  </header>
  <nav>
    <div class="scroll-left">
      nav<br>nav<br>nav<br>nav<br>nav<br>nav<br>nav<br>nav<br>nav<br>nav<br>nav<br>nav<br>nav<br>nav<br>nav<br>nav<br>nav<br>nav<br>nav<br>nav<br>nav<br>nav<br>nav<br>nav<br>nav<br>nav<br>nav<br>nav<br>nav<br>nav<br>nav<br>
    </div>
    <div class="scroll-left">
      nav2<br>nav2<br>nav2<br>nav2<br>nav2<br>nav2<br>nav2<br>nav2<br>nav2<br>nav2<br>nav2<br>nav2<br>nav2<br>nav2<br>nav2<br>nav2<br>nav2<br>nav2<br>nav2<br>nav2<br>nav2<br>nav2<br>nav2<br>nav2<br>nav2<br>nav2<br>nav2<br>nav2<br>nav2<br>nav2<br>nav2<br>nav2<br>nav2<br>nav2<br>nav2<br>nav2<br>nav2<br>nav2<br>nav2<br>nav2<br>nav2<br>nav2<br>
    </div>
  </nav>
  <main>main main main main
    <br>main<br>main<br>main<br>main<br>main<br>main<br>main<br>main<br>main<br>main<br>main<br>main<br>main<br>main<br>main<br>main<br>main<br>main<br>main<br>main<br>main<br>main<br>main<br>main<br>main<br>main<br>main<br>main<br>main<br>main<br>main<br>main<br>main<br>main<br>main<br>main<br>main<br>main<br>main<br>main<br>main<br>main<br>main<br>main<br>main<br>main<br>    main main mainmain
    <br>main<br>main<br>main<br>main<br>main<br>main<br>main<br>main<br>main<br>main<br>main<br>main<br>main<br>main<br>main<br>main<br>main<br>main<br>main<br>main<br>main<br>main<br>main<br>main<br>main<br>main<br>main<br>main<br>main<br>main<br>main<br>main<br>main<br>main<br>main<br>main<br>main<br>main<br>main<br>main<br>    main main main
  </main>
</div>

Css相关问答推荐

如何改变图标的 colored颜色 时悬停在

通过使溢出的子元素具有其宽度的100%来防止Flex元素溢出

隐藏div后缺少div的InnerHTML

如何引用 SCSS 中的现有类?

CSS关键帧中使用transform-origin存在问题的解决方案

CSS Select 器 $parent > $child Select 嵌套列表中的所有
  • 子元素
  • 从 React MUI 自定义不同组件的正确方法?

    使用 mixin 在 SCSS 中进行媒体查询

    如何将 CSS 样式应用于 Quarto 输出

    基于内容显示(show)/隐藏(hide)同级div

    CSS 中的区域类似于 C# 区域?

    边界半径不起作用

    创建 CSS 全局变量:样式表主题管理

    悬停效果:展开底部边框

    Sass 无效的 CSS 错误:预期的表达式

    Bootstrap 4:导航内的多级下拉菜单

    CSS 块格式化上下文是如何工作的?

    如果容器 div 较小,如何将子 div 扩展到 100% 屏幕宽度?

    在移动网络上禁用捏zoom

    如何根据容器大小设置字体大小?