例如,我有一个想要向右浮动的元素
<View style={{width: 300}}> <Text style={{backgroundColor: "#DDD"}}>Hello</Text> </View>
如何Text浮动/向右对齐?另外,为什么Text占用了整个空间View,而不仅仅是“Hello”的空间?
Text
View
为什么 Text 占据了 View 的全部空间,而不仅仅是“Hello”的空间?
因为View是一个 flex 容器并且默认情况下有flexDirection: 'column'and alignItems: 'stretch',这意味着它的孩子应该被拉伸以填充它的宽度。
flexDirection: 'column'
alignItems: 'stretch'
(请注意,根据文档, React Native 中的 所有 组件都是display: 'flex'默认的,display: 'inline'根本不存在。这样,React Native中 aText内的默认行为与网络上 a内的默认行为不同;在后一种情况下,span 不会 填满 the 的宽度,因为默认情况下 a 是一个内联元素。React Native 中没有这个概念。)View``span``div __div``span
display: 'flex'
display: 'inline'
View``span``div
div``span
文本如何浮动/向右对齐?
floatReact Native 中不存在该属性,但您可以使用 大量 选项(行为略有不同),可以让您右对齐文本。以下是我能想到的:
float
textAlign: 'right'
native/docs/text-style-props.html#textalign)在Text元素上使用
<View> <Text style={{textAlign: 'right'}}>Hello, World!</Text> </View>
(这种方法不会改变Text填充整个宽度的事实View;它只是右对齐 中的文本Text。)
alignSelf: 'flex-end'
native/docs/layout-props.html#alignself)在Text
<View> <Text style={{alignSelf: 'flex-end'}}>Hello, World!</Text> </View>
这Text会将元素缩小到容纳其内容所需的大小,并将其放在View.
alignItems: 'flex-end'
native/docs/layout-props.html#alignitems)在View
<View style={{alignItems: 'flex-end'}}> <Text>Hello, World!</Text> </View>
这相当于设置alignSelf: 'flex-end'所有View的孩子。
flexDirection: 'row'
native/docs/layout-props.html#flexdirection)和justifyContent: 'flex- end'View
justifyContent: 'flex- end'
<View style={{flexDirection: 'row', justifyContent: 'flex-end'}}> <Text>Hello, World!</Text> </View>
flexDirection: 'row'将布局的主要方向设置为水平而不是垂直;justifyContent就像alignItems,但控制主方向而不是交叉方向的对齐。
justifyContent
alignItems
native/docs/layout-props.html#flexdirection)on theView和marginLeft: 'auto'on theText
marginLeft: 'auto'
<View style={{flexDirection: 'row'}}> <Text style={{marginLeft: 'auto'}}>Hello, World!</Text> </View>
在Web 和真实 CSS 的上下文中演示了这种方法。
position: 'absolute'
native/docs/layout-props.html#position)和:right: 0Text
right: 0
<View> <Text style={{position: 'absolute', right: 0}}>Hello, World!</Text> </View>
就像在真正的 CSS 中一样,这需要Text“不流动”,这意味着它的兄弟姐妹将能够重叠它,并且View默认情况下它的垂直位置将在顶部(尽管您可以显式设置与顶部的距离)View使用top样式属性)。
top
自然,您想使用这些不同方法中的哪一种——以及它们之间的选择是否重要——将取决于您的具体情况。