当前位置: 首页 > 知识库问答 >
问题:

React Native Stylesheet:{flex: 1}做什么?

秦哲瀚
2023-03-14

React Native使用flexbox进行布局。在我看到的所有例子中,他们都是这样做的:

var styles = StyleSheet.create({
  container: {
    flex: 1,
    flexDirection: 'row'
  }
});

我对flex:1部分很好奇。根据Chris Coyier的定义https://css-tricks.com/snippets/css/a-guide-to-flexbox/,<code>flex:1等同于CSS中的<code>display:flex。

这里有一个CodePen,它证明了flex:1 React Native示例使用它的方式在CSS中没有任何作用:

http://codepen.io/johnnyo/pen/BoKbpb

直到我们在CSS中使用< code>display: flex时,flexbox才开始工作:

http://codepen.io/johnnyo/pen/epZXgz

那么这是否意味着React Native中的flex:1等同于CSS中的display:flex

共有3个答案

拓拔德馨
2023-03-14

许多教程都使用 flex: 1,就像您在示例中所做的那样。主要原因是因为有时(取决于元素,例如ListStyle,如果我的内存可用),如果您不定义尺寸,例如高度(例如。高度:“400 像素”)。Flex:非常棒,因为它可以保持各种尺寸的响应速度。

但是我应该注意,对于任何没有兄弟的组件,flex的值完全是任意的。《出埃及记》对于您的顶级组件,您可以说< code>flex: 43254315,它做的事情与< code>flex: 1相同。它只是意味着“占据整个空间”(无论“整个”可能是什么)。

另一方面,如果您有一些兄弟组件,那么flex值非常重要。例如,如果一个组件是flex:2而另一个组件则是flex:3,则第一个组件占据屏幕的2/5,第二个组件占据了屏幕的3/5。

简而言之:根据您的风格,< code>flex: 1看起来可能与< code>display: flex相同,但这只是因为您在示例中使用它的方式不同。如果你给它几个兄弟姐妹,你会发现它的行为非常不同。

邰建业
2023-03-14

对Jarek Potiuk的答案的评论是:“flex:1”确实在react-native中做了一些类似于flex-grow行为的事情。即使它是唯一一个具有flex:定义的。

诸如flexDirection,alignItems,justifyContent之类的样式都定义了元素子元素的样式。类似于CSS Display:flex,它也定义了子级。

相反,flex: x定义了元素本身。

例如,如果容器组件具有flexDirection: 'row ',alignItems: 'center'
并且有3个子组件:

子1有宽度50

子 2 具有弹性 1(或任何其他数字,但 1 是常见做法)

儿童 3 的宽度为 50

然后中间组件将“拉伸”,以便3个子组件一起填充父组件的整个宽度。

郭知
2023-03-14

css flexbox和Facebook实现的有很大区别。很多共同点,但默认值非常不同。具体来说:

Everything is display: flex by default. All the behaviors of block and inline-block can be expressed in term of flex but not the opposite.

flex:属性仅在同一级别上存在具有不同 flex 值的组件(flex: 1,flex: 3)时才使用,这意味着第二个元素应比第一个元素大 3 倍。flex 属性是唯一受支持的属性(无增长/收缩支持)。

更多信息: https://github.com/facebook/css-layout

 类似资料:
  • 问题内容: 我们都知道,柔性属性是一个速记,和属性。其默认值为。它的意思是: 但我注意到,在很多地方都使用过。是速记还是?我不明白这是什么意思?我在谷歌搜索中找不到任何东西。 问题答案: 这里是解释: flex: 等同于flex:10。使flex项目具有弹性,并将flex基础设置为零,从而使该项目接收flex容器中指定比例的可用空间。如果flex容器中的所有项目都使用此模式,则它们的大小将与指定的

  • 我在JScript中遇到了一段代码: 如果我自己输出它,我什么也得不到,甚至连一个错误都没有。 我在http://www.w3schools.com/jsref/jsref_obj_regexp.asp上找不到任何关于它的引用 在这段代码之前有一个regex搜索,我怀疑这与它有关:

  • 本文向大家介绍flex:1与flex:auto有什么区别?相关面试题,主要包含被问及flex:1与flex:auto有什么区别?时的应答技巧和注意事项,需要的朋友参考一下

  • 问题内容: 在mdn 与…相同 。 但是,实际上它在浏览器中有不同的显示。 您可以通过更改CSS中的注释在jsFiddle中进行尝试。 当我使用元素时,其类名将是,但使用时不会发生。 我不明白为什么。寻求帮助。非常感谢。 问题答案: 该 属性是设置的简写: 该规则应对此进行计算: 这些值在规范中定义。参见7.1.1节。的基本价值 我之所以说 “应该计算” ,是因为在IE11和可能的其他浏览器中,度

  • 介绍 你好,我是 Franklin Risby 教授,很高兴认识你。接下来我们将共度一段时光了,因为我要教你一些函数式编程的知识。好了,关于我就介绍到这里,你怎么样?我希望你已经熟悉 JavaScript 语言了,关于面向对象也有一点点的经验了,而且自认为是一个合格的程序员。希望你没有昆虫学博士学位也能找到并杀死一些臭虫(bug)。 我并不假设你之前有任何函数式编程相关的知识——我们都知道假设的后

  • 本文向大家介绍简写的flex:1的完整写法是什么?相关面试题,主要包含被问及简写的flex:1的完整写法是什么?时的应答技巧和注意事项,需要的朋友参考一下 flex-grow:1; flex-shrink:1; flex-basis:0%;