css 嵌套布局中的Div高度和溢出,以实现可滚动的子元素

sgtfey8w  于 2023-02-17  发布在  其他
关注(0)|答案(1)|浏览(154)

我在理解div高度和溢出的概念上遇到了巨大的困难。我已经找了两天了,但是我想我在这里漏掉了一个关键的概念...
我的布局如下所示(Tailwind Playground):

蓝色的div不能一直滚动到内容的结尾,因为某些原因,div认为它的高度比实际的要大(正好是它上面第二个导航栏(红色)的高度),结果,我不能一直滚动到底部。
此外,必须为每个子div重复h-full,直到我到达我想要滚动的div,这对我来说似乎是不合适的,但除此之外,它假设h-auto,这是不好的。

<div class="h-screen overflow-hidden">
  <div class="flex h-full flex-col overflow-hidden">
    <div class="w-full bg-slate-500 text-center text-white h-12 ">NAVBAR</div>
    <div class="flex h-full overflow-hidden">
      <div class="flex h-full basis-1/6">
        <div class="w-full bg-gray-300 text-center text-black">Sidebar</div>
      </div>

      <div class="flex h-full grow flex-col bg-slate-500">
        <div class="h-12 w-full shrink-0 bg-red-400 text-center">Second Navbar</div>
        <div class="h-full w-full grow bg-green-400">
          <div class="flex h-full">
            <div class="w-1/3 bg-blue-400 text-center">
              <div class="flex h-full flex-col overflow-y-scroll">
                <div>
                  Lorem....
                </div>
              </div>
            </div>
            <div class="h-full w-2/3 overflow-y-scroll bg-orange-400 text-center">Main content</div>
          </div>
        </div>
      </div>
    </div>
  </div>
</div>
50pmv0ei

50pmv0ei1#

让我们看一下容器(蓝色父项)位于第二个导航栏下。(也是第二个导航栏的父项)的高度约为831 px。导航栏的高度为3rem -约为48 px。但蓝色父项的高度为100%(其父容器的)~ 831 px。所以它基本上是溢出的(因为831+48!= 831)。如果你把overflow:hidden放在蓝色的父容器上,它会隐藏溢出的内容,蓝色的容器会正常滚动。https://play.tailwindcss.com/SOO2rwiGsw

相关问题