Div 高度根据内容

Div height according to content

我正在开发具有固定页眉和页脚的模式。

这里是 Jsfiddle 例子

目前 scrollable-stuff class 高度为 80%。如果内容较少,没有滚动,那么我需要降低高度并取内容的高度。

例如 this example 内容较少,没有滚动条,但 space 是空的。如果没有滚动,我需要获取内容的高度。

如有任何帮助或建议,我们将不胜感激

提前致谢。

看起来模态高度受此内联样式控制:

<div id="ModalPopup" style="width:600px;height:300px;">

这个固定高度是导致模态框高度缺乏响应的原因。要解决此问题,请删除 height:300px;,但您可能还需要找出它的设置位置并在那里进行更改。类似的解决方案也适用于固定宽度。

看起来还有一个 y-scrollbar,你只需 x-scroll 就可以到达那里:)

而不是使用height: 300px;

你可以使用max-height: 300px;

因为 max-height 告诉浏览器,如果内容小于但不大于指定高度,则高度可以更小,在您的情况下为 300px

在这些情况下,我喜欢利用 flexbox 列方向。这里的想法是为页脚和页眉设置固定的高度,然后使用 flex-basis:100%[=39 让内容占据其余部分=]: 1.

首先删除内联样式 style="width:600px;height:300px as it is conflicting with this solution, then add a class to your modal. For the example below I chose "myModal",作为旁注,使用 overflow: auto,以避免在内容不足的情况下出现滚动条。此解决方案还处理 fancybox 附带的默认样式。

例子

$(document).ready(function() {

   $("#ModalPopup").fancybox({}).trigger('click');

});
.title-div {
  min-height: 32px;
}

.scrollable-stuff {
  overflow-y: auto;
  flex-grow: 1;
  flex-basis: 100%;
}

.button-div {
  min-height: 32px;
}

.myModal {
  display: flex;
  flex-direction: column;
  height: 100%;
  overflow: hidden;
}
<link href="https://cdnjs.cloudflare.com/ajax/libs/fancybox/2.1.5/jquery.fancybox.min.css" rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/fancybox/2.1.5/jquery.fancybox.min.js"></script>

<div id="ModalPopup" class="myModal">

  <div class="title-div">Title</div>

  <div class="scrollable-stuff">

    <h1>For Your Information</h1>
   
    <p>Here is some text to fill out this space.</p>
    <p>Here is some text to fill out this space.</p>
    <p>Here is some text to fill out this space.</p> 
    <p>Here is some text to fill out this space.</p> 
    <p>Here is some text to fill out this space.</p> 
    <p>Here is some text to fill out this space.</p>
    <p>Here is some text to fill out this space.</p>
    <p>Here is some text to fill out this space.</p>
    <p>Here is some text to fill out this space.</p>
  </div>

  <div class="button-div">
    <button type="button" class="btn-primary">Click</button>
  </div>
</div>