【问题标题】:Show/hide grid-template-row of empty content or if grid area not rendered显示/隐藏空内容的网格模板行或网格区域未呈现
【发布时间】:2021-08-11 13:57:05
【问题描述】:
    display: grid;
    grid-template-columns:var(--side-bar-width) 1fr;
    grid-template-rows: 60px 1fr 90px;
    gap: 0px 0px;
    grid-template-areas:
        "Sidebar Header"
        "Sidebar Body"
        "Player Player";

我有三个组件,每个组件都渲染一个类名为
.Body { ... grid-area: Body; },
.Sidebar { ... grid-area: Sidebar; },
.Player{ ... grid-area: Player; }
的div 分别

Player 组件是高度为 90 像素的条件渲染,最初它是不可见的,因此有时看起来视口在页面加载时屏幕底部有 90 像素的空白空间

Player 组件/内容属于Player grid-area。如何在网格模板中动态隐藏内容为空的网格区域?隐藏可能意味着最小高度 0 或不显示

换句话说,如果播放器组件被渲染,我想显示/隐藏最后一个网格模板行,然后调整网格以填充屏幕

我也看到了CSS Grid. Hide unused area & Preventing fixed footer from overlapping content

更新:
Player css 有这些附加属性

.Player {
    ...
    height: 90px;
    display: flex;
    width: 100%;
    position: fixed;
    bottom: 0;
}

【问题讨论】:

  • 不要定义第三行,你是在强制 90px 空白空间,而是将其定义为 grid-auto-rows: 90px;
  • 好像你更新了你的问题。请参阅我的更新答案。
  • @MichaelBenjamin 我添加了评论和更新

标签: css reactjs css-grid show-hide


【解决方案1】:

更新答案(基于问题的更改)

如果必须明确定义播放器网格区域,则将其在grid-template-rows 中的行更改为automin-content。然后,您可以在组件本身中定义高度(即,height: 90px)。


原答案

考虑将 Player 组件排除在显式网格之外。换句话说,不要在grid-template-areasgrid-template-rows 中定义它。

使用grid-auto-rows: 90px

如有必要,将grid-row: 3 应用于组件。

甚至grid-area: 3 / 1 / auto / -1,相当于:

  • grid-row-start: 3
  • grid-column-start: 1
  • grid-row-end: auto
  • grid-column-end: -1

【讨论】:

  • 我从grid-template-areasgrid-template-rows中删除了Player,然后我添加了grid-auto-rows: 90px。它不起作用,发生的事情是显式 grid-template-area 没有刷新以显示新的附加底行,而是呈现了 Player div 并且它重叠底部 90px最后一个网格模板行(SidebarBody divs)。也许是因为Player div 有属性{ position: fixed; bottom: 0;}
  • 更新:我将Player position: fixed 更改为position: sticky,它按预期工作。需要grid-area: 3 / 1 / auto / -1。非常感谢您的帮助
  • 当您将绝对定位应用于网格(或弹性)项目时——position: fixed 是一种绝对定位形式——它会从文档的正常流程中删除项目。本质上,它将它从网格布局中删除,并且周围的项目不识别它的存在(因此重叠)。 w3.org/TR/css3-grid-layout/#static-position
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-09-16
  • 1970-01-01
  • 2020-03-29
  • 1970-01-01
  • 2021-10-15
  • 2012-03-19
  • 1970-01-01
相关资源
最近更新 更多