【问题标题】:Make div fill height of parent with dynamic sibling使用动态兄弟使父级的 div 填充高度
【发布时间】:2018-06-24 15:33:33
【问题描述】:

我有一个带有一个容器和两个孩子的 html 结构。第一个孩子是动态大小的图片,第二个孩子也是动态大小的 div。

我想要两件事:

  • 如果两个孩子小于主元素的总高度,第二个孩子应该填补空白
  • 如果两个子元素的高度超过主元素的总高度,则主元素应展开以适应两个 div,并且页脚应向下推

【问题讨论】:

  • 您必须为此使用 javascript。

标签: html image css responsive-design


【解决方案1】:

使用带有 flex-direction 列的 flexbox,并在主目录上设置 min-height,然后允许第二个孩子成长,而不是第一个孩子

*{box-sizing:border-box}

main{
  min-height:500px;
  display:flex;
  flex-direction:column
}

.div1{
  flex:0;
  height: 100px; /*for demonstration only, leave it undeclared (auto)*/
  border:2px solid orange; 
  color:orange
}

.div2{
  flex: 1 0 auto;
  border: 2px solid lightblue;
  color:lightblue;
}
<main>
  <div class="div1"><p>image with dinamic height</div>
  <div class="div2"><p>div with information about the page</div>
</main>

【讨论】:

  • 至少在 2020 年之前我不会使用 flexbox。它最近得到了主要网络浏览器的支持,总市场份额为 aprox。 35%(有支持 flexbox 的版本)
  • @JorgeeFG IE10 带有 -ms- 前缀不应该抱怨建议的内容。 IE9没戏了? 13%(2018 年仍然很高)的市场份额尚未是我们的错(以及他们的)。 两年 前,Microsoft 停止了对 8、9、10 的支持! (现在与 11 和 Edge 斗争)。为此类浏览器提供编程“支持”就像公开同意您的用户感染恶意软件——而不是提供替代浏览器——在某些国家可能会受到惩罚:) microsoft.com/en-us/windowsforbusiness/end-of-ie-support.
  • @JorgeeFG 真的吗?对 flexbox 的支持非常完美。 caniuse.com/#feat=flexbox 这个东西会毫无问题地回退,'main' 将只是 display:block 设置最小高度,div1 和 2 将只是具有自动高度的块级元素。没那么可怕。
  • @FacundoCorradini 是的,也忘了提这个:)
  • @FacundoCorradini BTW min-height - 没有。视口在这里很重要。将html, bodymargin:0; height:100%; 一起使用
猜你喜欢
  • 2012-09-11
  • 2012-07-29
  • 2013-07-27
  • 1970-01-01
  • 2015-02-15
  • 2019-07-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多