我找到了一种方法,使一个div容器占据至少一个页面的全部高度,通过设置最小高度:100%;。然而,当我添加一个嵌套的div并设置高度:100%;,它不会延伸到容器的高度。有办法解决吗?

Html, body { 高度:100%; 保证金:0; } #控制{ 最小高度:100%; 背景:粉色; } # containment-shadow-left { 高度:100%; 背景:水; } < div id = "容器" > < div id = " containment-shadow-left " > 你好世界! < / div > < / div >


当前回答

因为谷歌员工:

这个jquery解决方案使#containment自动获取高度(by, height: auto),然后获取实际高度作为像素值分配。

<script type="text/javascript">
<!--
    $(function () {

        // workaround for webkit-bug http://stackoverflow.com/a/8468131/348841

        var rz = function () {
            $('#containment')
            .css('height', 'auto')
            .css('height', $('#containment').height() + 'px');
        };

        $(window).resize(function () {
            rz();
        });

        rz();

    })
-->
</script>

其他回答

添加这个到父组件为我修复了它:

display: flex;
flex-direction: column;

为父容器添加高度:1px。工作在Chrome, FF, Safari。

2022年7月6日

.parent { 显示:flex;/*非常重要的规则*/ flex-direction:列;/*非常重要的规则*/ 最小高度:100% } .child { 高度:100%; flex-grow: 1;/*非常重要的规则,模拟flex: 1;* / } < div class = "父" > < div class = "孩子" > < / div > < / div >

另一个简单的JS解决方案,可以用来避免不简单的css或额外的标记/ hack解决方案。

function minHeight(elm, percent) {
  var windowHeight = isNaN(window.innerHeight) ? 
                     window.clientHeight : window.innerHeight;
  var height = windowHeight * percent / 100;
  elm.style.minHeight = height + 'px';
}

W/ jQuery:

function minHeight($elm, percent) {
  var windowHeight = $(window).height();
  var height = windowHeight * percent / 100;
  $elm.css('min-height', height + 'px');
}

Angular指令:

myModule.directive('minHeight', ['$window', function($window) {
  return {
    restrict: 'A',
    link: function(scope, elm, attrs) {
      var windowHeight = isNaN($window.innerHeight) ? 
               $window.clientHeight : $window.innerHeight;
      var height = windowHeight * attrs.minHeight / 100;
      elm.css('min-height', height + 'px');
    }
  };
}]);

这样用:

<div>
  <!-- height auto here -->
  <div min-height="100">
    <!-- This guy is at least 100% of window height but grows if needed -->
  </div>
</div>

已经有一段时间了,但是,如果其他人还在挣扎,我找到了我的变通办法。 我需要的父母有一个最小的高度,和孩子(这将包含几个图像/文件预览)必须占据整个父母,所以..

我简单地定义了一个最小的高度给孩子,让父母没有定义高度,所以它可以随着孩子的内容增长。

CSS

.parent{
    border: 1px solid black;
    border-radius: 5px;
}
.children{
  width: 100%;
  min-height: 100px;
}

HTML:

<div class="parent">
    <div class="children">
        some content inside
    </div>
</div>