我试图理解我的意外行为:
容器中有一个最大高度为100%的元素,该容器也使用了最大高度,但意外的是,子元素溢出了父元素:
测试用例:http://jsfiddle.net/bq4Wu/16/
.container {
background: blue;
padding: 10px;
max-height: 200px;
max-width: 200px;
}
img {
display: block;
max-height: 100%;
max-width: 100%;
}
但是,如果为父级指定了明确的高度,则这是固定的:
测试用例:http://jsfiddle.net/bq4Wu/17/
.container {
height: 200px;
}
有人知道第一个例子中孩子为什么不尊重父母的最大身高吗?为什么需要明确的高度?
代替max-high: 100%/100%,填充所有空间的另一种方法是使用位置:绝对
,顶部/底部/左侧/右侧设置为0。
换句话说,超文本标记语言如下所示:
<div class="flex-content">
<div class="scrollable-content-wrapper">
<div class="scrollable-content">
1, 2, 3
</div>
</div>
</div>
.flex-content {
flex-grow: 1;
position: relative;
width: 100%;
height: 100%;
}
.scrollable-content-wrapper {
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
overflow: auto;
}
.scrollable-content {
}
您可以在CSS Flex/Grid中的Codesandbox-Overflow中看到一个实例
.container {
background: blue;
padding: 10px;
max-height: 200px;
max-width: 200px;
float: left;
margin-right: 20px;
}
.img1 {
display: block;
max-height: 100%;
max-width: 100%;
}
.img2 {
display: block;
max-height: inherit;
max-width: inherit;
}
<!-- example 1 -->
<div class="container">
<img class='img1' src="http://via.placeholder.com/350x450" />
</div>
<!-- example 2 -->
<div class="container">
<img class='img2' src="http://via.placeholder.com/350x450" />
</div>
奇怪的是,当您为孩子的最大高度指定百分比时,它是家长实际高度的百分比,而不是家长的最大高度的百分比。这同样适用于最大宽度。
因此,当您没有在父级上指定明确的高度时,就没有可以计算子级的max-高度
的基高度,因此max-高度
计算为no
,允许子级尽可能高。现在作用在子级上的唯一其他约束是其父级的max-宽度
,并且由于图像本身比它的宽度高,它会向下溢出容器的高度,以便在保持其长宽比的同时仍然尽可能大。
当您为父级指定一个显式高度时,子级知道它最多必须是该显式高度的100%。这允许它被约束到父级的高度(同时仍然保持其长宽比)。
问题内容: 我试图了解什么对我来说似乎是意外的行为: 我在容器内有一个最大高度为100%的元素,该元素也使用最大高度,但是,出乎意料的是,子代溢出了父代: 但是,如果给定父级的显式高度,则此问题已解决: 有谁知道为什么孩子在第一个例子中不尊重父母的最大身高?为什么需要一个明确的高度? 问题答案: 当您指定的百分比上一个孩子,这是父母的实际高度的百分比,而不是父母的,奇怪的。同样适用于。 因此,如果
我在flexbox数组中有一系列元素。每个元素都包含一张“卡片”,其高度各不相同。当我试图让卡片占据它们所在的flexbox子元素的剩余空间时,它们会溢出到下面一行的元素中。如果我指定所有flex子项都是100%高度,那么它们的高度实际上会折叠为它们内部卡的大小。 蓝色卡片的高度为100%。从字面上看,它们的高度是父母的100%,但这意味着它们会溢出。 我怎样才能让他们只扩展到他们父母的底部呢?
问题内容: 我有一个具有以下结构的网站: 导航在左侧,内容div在右侧。内容div的信息是通过PHP获取的,因此每次都不同。 无论加载哪个页面,如何垂直缩放导航使其高度与内容div的高度相同? 问题答案: 注意 :此答案适用于不支持Flexbox标准的旧版浏览器。 我建议您看看使用Cross-Browser CSS和NoHacks的等高列。 基本上,以与浏览器兼容的方式使用CSS做到这一点并不是一
问题内容: 我使用此 CSS将最大高度设置为 谁能给我一个普遍的答案, 和 之间有什么区别? 问题答案: 这是W3Clink的解释: 以下算法描述了两个属性[min-height和max-height]如何影响’height’属性的使用值: 临时使用的高度是根据上面“计算高度和边距”下的规则计算的(不包括“最小高度”和“最大高度”)。 如果此暂定高度大于“最大高度”,则会再次应用上述规则,但是这次
我想有一个垂直的菜单,有一个特定的高度。 每个子级必须填充父级的高度并具有中间对齐的文本。 孩子的数量是随机的,所以我必须使用动态值。 Div包含随机数的子级(),这些子级总是必须填充父级的高度。为了实现这一点,我使用了FlexBox。 为了使链接中的文本对齐,我使用了技术。但是使用表格显示需要使用100%的高度。 我的问题是在webkit(Chrome)中不工作。 有解决此问题的方法吗? 或者是
问题内容: 我有一个可能包含大量数据的元素,但是我不想让它破坏页面布局,所以我设置了和,希望在内容不适合时显示滚动条。 一切在Firefox和IE7中都可以正常工作,但是IE8的行为就像是存在而不是。 我尝试了,仍然没有帮助,IE8只是将内容截断而不显示滚动条。更改声明品牌溢出工作OK,这是组合和打破的东西。 在IE8的最终发行版本中,这也被记录为[正式错误。 有解决方法吗?现在,我求助于而不是使