简体   繁体   English

Css 身高:0 无证财产?

[英]Css height:0 undocumented property?

i have main grid with 2 columns.我有 2 列的主网格。 grid take 1 fr height.网格采用 1 fr 高度。 In right column i want create scrolled div with take all height.在右栏中,我想创建滚动的 div 并占据所有高度。

We all know that flex dont overflow need apply min-height/min-width: 0;我们都知道flex不溢出需要apply min-height/min-width: 0;

But i 2 hour try apply all combination for stop height overflow.但是我 2 小时尝试应用所有组合来停止高度溢出。 And what did i find?我发现了什么? min-height dont give nothing in my example. min-height 在我的示例中没有给出任何内容。 But i miss click and write rule height:0 and overflow stopped?但是我想念点击并写入规则高度:0 并且溢出停止了吗? what is magic ?什么是魔法? I didnt find nothing in google about it undocumented property!我没有在谷歌上找到任何关于它的无证财产!

<div class="min-h-screen bg-teal-200 flex flex-col">
  <div class="h-20 bg-indigo-400">header</div>

    <div class="flex-grow grid grid-cols-[300px_1fr] grid-rows-1 bg-green-200">
      <div>left short content</div>
      <div class="flex flex-col">
        <div class="flex-grow bg-rose-300 overflow-y-scroll min-h-0 h-0">
              <div class="h-60 border border-black"></div>
              <div class="h-60 border border-black"></div>
              <div class="h-60 border border-black"></div>
              <div class="h-60 border border-black"></div>
              <div class="h-60 border border-black"></div>
              <div class="h-60 border border-black"></div>
        </div>
      </div>
    </div>

  <div class="h-20 bg-indigo-400">footer</div>
</div>

在此处输入图像描述

sandbox: https://play.tailwindcss.com/3fyrMQK6Me沙盒: https://play.tailwindcss.com/3fyrMQK6Me

By making the element h-0 it will have a height equal to 0 thus it won't contribute to the dimension of the grid (it's like it doesn't exist).通过使元素成为h-0 ,它的高度将等于 0,因此它不会影响网格的维度(就像它不存在一样)。 Later it will grow to fill the space with the flex-grow稍后它将增长以填充flex-grow的空间


If you want to work with min-height you have to do is to consider h-screen instead of min-h-screen then min-h-0 on the second child element.如果你想使用min-height你必须做的是考虑h-screen而不是min-h-screen然后min-h-0在第二个子元素上。 You have to also disable the shrinking on header and footer:您还必须禁用 header 和页脚上的收缩:

 <script src="https://cdn.tailwindcss.com"></script> <div class="h-screen bg-teal-200 flex flex-col"> <div class="h-20 flex-shrink-0 bg-indigo-400">header</div> <div class="flex-grow grid grid-cols-[300px_1fr] grid-rows-1 bg-green-200 min-h-0"> <div>left short content</div> <div class="flex flex-col"> <div class="flex-grow bg-rose-300 overflow-y-scroll"> <div class="h-60 border border-black"></div> <div class="h-60 border border-black"></div> <div class="h-60 border border-black"></div> <div class="h-60 border border-black"></div> <div class="h-60 border border-black"></div> <div class="h-60 border border-black"></div> </div> </div> </div> <div class="h-20 flex-shrink-0 bg-indigo-400">footer</div> </div>

You can also simplify like below:您也可以像下面这样简化:

 <script src="https://cdn.tailwindcss.com"></script> <div class="h-screen bg-teal-200 grid grid-cols-[300px_1fr] grid-rows-[auto_1fr_auto]"> <div class="h-20 bg-indigo-400 col-span-2">header</div> <div class="bg-green-200">left short content</div> <div class="bg-rose-300 overflow-y-scroll"> <div class="h-60 border border-black"></div> <div class="h-60 border border-black"></div> <div class="h-60 border border-black"></div> <div class="h-60 border border-black"></div> <div class="h-60 border border-black"></div> <div class="h-60 border border-black"></div> </div> <div class="h-20 bg-indigo-400 col-span-2">footer</div> </div>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM