将 minHeight 与 flex 一起使用会产生意外的填充

Posted

技术标签:

【中文标题】将 minHeight 与 flex 一起使用会产生意外的填充【英文标题】:Using minHeight with flex creates unexpected padding 【发布时间】:2017-11-14 19:36:19 【问题描述】:

代码:

<View style= flex: 1, borderColor: 'orange', borderWidth: 5 >
    <View style= flex: 1, minHeight: 50, backgroundColor: 'skyblue', borderColor: 'blue', borderWidth: 5  />
    <View style= flex: 1, backgroundColor: 'pink', borderColor: 'red', borderWidth: 5  />
</View>

截图:

注意底部的空白。两个子视图不填充父视图。 这仅在添加 minHeight: 50 时发生。 空白的高度好像和minHeight的值一样。

环境:

“世博”:“^17.0.0”, “反应”:“16.0.0-alpha.6”, "react-native": "https://github.com/expo/react-native/archive/sdk-17.0.0.tar.gz",

真实设备,包括 iPhone 和 android

【问题讨论】:

如果将minHeight: 0 添加到第二个元素会怎样? 另外,为了达到与minHeight: 50 与标准flexbox 类似的效果,将flex: 1 0 50px; 设置为第一个孩子,将flex: 1 1 50px; 设置为第二个 @LGSon 将minHeight 添加到第二个元素没有效果。 flex: 1 1 50px; 中的每个值是什么意思? 1 增长并占用可用空间,1 允许在没有可用空间时缩小,50px 高度为 50px,这意味着如果有空间,它将最小为 50px。第一项,第二个值(flex-shrink)有一个0,意思是最小50px,即使没有可用的地方也不缩小,这类似于minHeight所做的 【参考方案1】:

使用 flexGrow 代替 flex。下面给出了工作示例。

<View style= flexGrow: 1, borderColor: 'orange', borderWidth: 5 >
   <View style= flexGrow: 1, minHeight: 50, backgroundColor: 'skyblue', borderColor: 'blue', borderWidth: 5  />
   <View style= flexGrow: 1, backgroundColor: 'pink', borderColor: 'red', borderWidth: 5  />
</View>

这是截图。

【讨论】:

以上是关于将 minHeight 与 flex 一起使用会产生意外的填充的主要内容,如果未能解决你的问题,请参考以下文章

关于将 Flex 与 WCF 和 Linq to Entities 一起使用的建议

如何将 Actionscript“类”与 Flex MXML 文件一起使用?

使用公式连接引用会产生运行时错误

将 ag-grid 与 flexbox 一起使用

版本控制如何与 Flex 远程对象和 AMF 一起使用?

如何将flex子元素堆叠在一起