【问题标题】:How to make a Quasar q-page-container child use full height of its grandparent?如何让 Quasar q-page-container 孩子使用其祖父母的全高?
【发布时间】:2019-12-01 06:37:39
【问题描述】:

我有一个 Quasar 布局和一个组件,我需要填充 q-page-container 元素高度的 100%。问题是容器没有完全展开以覆盖整个高度(不像抽屉,它使用绝对定位)。

我见过的所有解决此问题的 CSS 技巧都会干扰父容器的属性,我不愿意这样做以确保不会破坏内部 Quasar 布局所需的任何属性。将容器的子div设置为height: 100%没有影响,将其设置为100px等绝对值确实可以正确设置高度,但我需要它来适应浏览器视口。

我已经设置了一个小提琴来说明the problem here

在这种情况下,我希望 #troublemaker 填充其容器的整个高度 - 或者更确切地说,它的祖父级减去标题高度,因为父级容器只是扩展到内部的任何内容。

PS:CSS 布局和定位对我来说似乎总是违反直觉,所以如果有人对资源有一些好的建议来学习如何更好地理解它的逻辑,我将不胜感激!

【问题讨论】:

    标签: html css quasar-framework


    【解决方案1】:

    在 q-page-container 中使用 q-page 无疑是最常见的方式。根据文档,q-page 必须位于 q-page 容器中。但是,如果您想在容器中放置一个 div 并让它充满容器,您可以使用 class="fit" 并且 div 将填充整个容器。

    【讨论】:

      【解决方案2】:

      如果您在q-page 中有一个div,我发现正确的方法是让divq-page 组件继承min-height CSS 属性。

      我更新了小提琴以显示它:https://jsfiddle.net/u39qbrpj/4/

      #troublemaker {
        min-height: inherit;
        background-color: green;
      }
      

      【讨论】:

      • 这很有用!然而,不知何故,我的 QScrollArea 需要设置 height 而不是 min-height 才能显示其内容(QTable)。然而,父 QPage 显然使用 min-height。我现在知道如何继承min-height,但我能以某种方式将height 设置为min-height吗?还是我应该以不同的方式处理这个问题?
      • 实际上我自己通过研究codepen.io/cp-tof06/pen/bGdKXpW而不是样式属性找到了解决方案,我现在在QScrollArea上使用class="column full-height"。显然,flex 布局使这一切都神奇地工作(仅在 QScrollArea 和 QTable 上使用 col 类,没有任何样式属性)。
      【解决方案3】:

      我认为q-page-container 需要q-page

      因此,只需将您的 div 替换为 q-page 即可。 这是你的小提琴:https://jsfiddle.net/uab1rnjh/2/

      或者,如果您真的想使用 div
      您可以使用 css 解决问题:height: calc(100vh - 50px);
      这是你对 div 的摆弄:https://jsfiddle.net/yghL6so8/2/

      在文档中,您可以看到 QPageContainer 封装了一个 QPage。 在:https://quasar.dev/layout/page#QPageContainer-API

      【讨论】:

      • 感谢您的建议!这适用于q-page 元素,但如果我包含另一个组件,则它是自己的 div,如果不在内部修改组件本身,我无法将其指定为q-page。此外,使用 CSS 帮助程序类 fitfull-height 也不起作用。在这种特殊情况下,style='height: 100vh; padding-top: -50px;' 似乎可以解决问题。这是一个可行的解决方案吗?
      • 以上应该是margin-top,而不是padding-top
      • 你可以通过height: calc(100vh - 50px);来达到目的,这里有一个小提琴来解释:jsfiddle.net/yghL6so8/2
      • 这很酷!我怎么一直错过这个?我认为这是解决这个问题的最干净的解决方案。
      • 这是赢家:.google-map { width: 100%;高度:计算(100vh - 50px);边距:0 自动;背景:灰色;职位:无; }
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-30
      • 1970-01-01
      • 1970-01-01
      • 2013-09-27
      相关资源
      最近更新 更多