我使用占用所有可用空间的第三方组件,即width=100%和height=100%。我没有控制权。
我正在尝试使其适合以下布局,但是它height=100%不起作用(我希望第三方组件占据所有绿色空间)。
为什么?您将如何解决?
.container {
display: flex;
flex-direction: column;
width: 200px;
height: 100px;
}
.header {
display: flex;
background-color: rgba(255, 0, 0, 0.5);
}
.content {
flex-grow: 1;
background-color: rgba(0, 255, 0, 0.5);
}
.third-party-component {
height: 100%;
width: 100%;
background-color: rgba(0, 0, 255, 0.5);
}
<div class="container">
<div class="header">Header</div>
<div class="content">
<div class="third-party-component">
Third party component
</div>
</div>
</div>
通常,对于使用percent on height来获取其父代的高度的元素,父代需要的高度不是auto或定位为绝对高度,否则height将计算为auto。
基于这两个选项,并且正如您在注释中提到的那样,您自己的标题的高度是动态的,您将得到绝对的定位。
将绝对值添加到的问题content将被淘汰,并且不再像正常流动的flex项那样运行,这是一个好消息,可以将包装器设置为绝对值。
堆栈片段
.container {
display: flex;
flex-direction: column;
width: 200px;
height: 100px;
}
.header {
display: flex;
background-color: rgba(255, 0, 0, 0.5);
}
.content {
position: relative; /* added */
flex-grow: 1;
background-color: rgba(0, 255, 0, 0.5);
}
.wrapper {
position: absolute; /* added */
left: 0; /* added */
top: 0; /* added */
right: 0; /* added */
bottom: 0; /* added */
}
.third-party-component {
height: 100%;
width: 100%;
background-color: rgba(0, 0, 255, 0.5);
}
<div class="container">
<div class="header">Header</div>
<div class="content">
<div class="wrapper">
<div class="third-party-component">
Third party component
</div>
</div>
</div>
</div>
另一个选择可能是更新Flexbox属性,content使用flex: 1 1 100%,给定高度,使用高度和高度,header flex-shrink: 0;使其不收缩(达到content100%)。
不过,这可能无法在Safari上运行,因为我知道height未设置该属性时会遇到问题,但由于无法访问Safari,现在无法测试。
.container {
display: flex;
flex-direction: column;
width: 200px;
height: 100px;
}
.header {
display: flex;
flex-shrink: 0;
background-color: rgba(255, 0, 0, 0.5);
}
.content {
flex: 1 1 100%;
background-color: rgba(0, 255, 0, 0.5);
}
.third-party-component {
height: 100%;
width: 100%;
background-color: rgba(0, 0, 255, 0.5);
}
<div class="container">
<div class="header">Header</div>
<div class="content">
<div class="third-party-component">
Third party component
</div>
</div>
</div>
问题内容: 我正在尝试扩展一些以填充屏幕,但是我很挣扎。我已经解决了这个jsfiddle的问题。 我真正想知道的是,当其父项具有相同的属性并且会扩展时,为什么100%的不会扩展到那个高度(或根本不扩展)? 问题答案: CSS 2.1规范涵盖了该问题: < 百分比> 指定百分比高度。相对于生成的盒子的包含块的高度计算百分比。如果未明确指定包含块的高度(即,它取决于内容的高度),并且该元素的位置不是绝
问题内容: 这是完整的代码: 什么也没出现。但是,如果我删除第一行(),则所有页面均按预期绿色。 我有两个问题: 如何在不删除标签的情况下填写页面? 为什么要删除使其起作用? 问题答案: CSS 属性,百分比值和DOCTYPE 问题的 第一部分 询问如何对您的身高施加100%的高度,其他人多次回答。本质上,在根元素上声明高度: 问题的 第二部分 受到的关注要少得多。我会尽力回答。 为什么去除mak
问题内容: 这是完整的代码: 什么也没出现。但是,如果我删除第一行(),则所有页面都是绿色的。 我有两个问题: 如何在不删除标签的情况下填写页面? 为什么要删除使其起作用? 问题答案: CSS 属性,百分比值和DOCTYPE 问题的 第一部分 询问如何对您的身高施加100%的高度,其他人多次回答。本质上,在根元素上声明高度: 问题的 第二部分 受到的关注要少得多。我会尽力回答。 为什么去除make
问题内容: 我希望轮播DIV(s7)扩展到整个屏幕的高度。我不知道为什么它不成功。 问题答案: 为了使百分比值适合身高,必须确定父母的身高。唯一的例外是 root 元素,它可以是百分比高度。。 因此,您已将除之外的所有元素赋予了高度,因此您应该添加以下内容: 而且您的代码应该可以正常工作。
问题内容: 我有两个div,高度为90%,但显示方式有所不同。 我试图在它们周围放一个外部div,但这没有帮助。另外,在Firefox,Chrome,Opera和Safari上也是如此。 有人可以解释为什么我遇到这个问题吗? 下面是我的代码: 问题答案: 使用(视口高度)代替百分比。它将获取浏览器的高度并相应地调整其大小,例如 试试这个代码 与CSS
问题内容: 我有两个div,高度为90%,但显示方式有所不同。 我试图在它们周围放一个外部div,但这没有帮助。此外,在Firefox,Chrome,Opera和Safari上也是如此。 有人可以解释为什么我遇到这个问题吗? 下面是我的代码: 问题答案: 使用(视口高度)代替百分比。它将获取浏览器的高度并相应地调整其大小,例如 试试这个代码 与CSS