我正在使用 React Native,一旦我引入了 ScrollView,我就很难保留元素的垂直居中。为了进行演示,我使用 React 原生游乐场创建了 3 个应用。所有示例都有 2 个页面,可以通过点击蓝色按钮来切换它们。
示例 1:
第一个示例显示了在第 2 页上垂直居中的块。发生这种情况是因为容器应用了以下样式:
flex: 1,
flexDirection: 'column',
justifyContent: 'center',
https://rnplay.org/apps/lb5wSQ
但是,一切换到第2页就有一个问题,因为页面的整个内容都不合适,所以我们需要一个ScrollView
。
示例 2
在此示例中,我将所有内容包装在滚动视图中。这允许页面2滚动,但现在我失去了页面1的垂直居中。
https://rnplay.org/apps/DCgOgA
示例 3
为了尝试恢复页面1的垂直居中,我将< code>flex: 1应用于ScrollView的< code > contentContainerStyle 。这修复了第1页的垂直居中,但是我不再能够一直向下滚动到第2页的底部。
https://rnplay.org/apps/LSgbog
如何解决这个问题,使我在第1页上的元素垂直居中,但仍能让ScrollView一直滚动到第2页的底部?
有一个新的解决方案(不幸的是目前只有iOS)-我们可以在Scrollview上使用centerContent
prop。
这是我的方法:
使用带有flex:1
的外部容器,则滚动视图需要具有{flexGrow:1,justifyContent:'center'}
using
。
<View style={styles.mainContainer}>
<ScrollView
contentContainerStyle={{flexGrow : 1, justifyContent : 'center'}}>
<View style={styles.scrollViewContainer}>
//Put your stuff here, and it will be centered vertical
</View>
</ScrollView>
</View>
样式:
const styles = StyleSheet.create({scrollView : {
height : Dimensions.get('window').height, }, mainContainer : {
flex : 1 }, scrollViewContainer : { }, })
我用flexGrow而不是flex解决了这个问题
<代码>
这使得内容容器可以拉伸以填充ScrollView,但不限制最大高度,因此当内容扩展到ScrollView的边界时,您仍然可以正确滚动
问题内容: 我怎么能垂直居中内的? 到目前为止,我的代码: 我已经尝试过“ top:50%”;和“ vertical-align:middle”;没有成功 编辑: 好的,所以已经讨论了很多。我也许已经开始了另一场小型的火焰战争。但是为了论证,那我该如何用一个表呢?到目前为止,我已经将CSS用于其他所有内容,所以这并不是说我没有尝试采用“良好做法”。 编辑: 内部div没有固定的高度 问题答案: 简
本文向大家介绍如何垂直居中` `?相关面试题,主要包含被问及如何垂直居中` `?时的应答技巧和注意事项,需要的朋友参考一下 使用协助元素(这里是i),作为img的相邻元素,同为inline-block的两元素相邻时增加vertical-align: middle
问题内容: 我正在尝试使用CSS的flexbox垂直居中放置项目;而且,我知道如何使用非供应商前缀的代码来做到这一点,但是即使使用供应商前缀,我也无法在Webkit(Chrome)中使用它。 我正在尝试垂直对齐#trigger中的跨度。 这是我的CSS: 有什么想法我做错了吗? 而且,如果您知道我正在使用的其他供应商前缀/版本的属性,请随时共享它们,以便它不仅可以在Webkit中使用。 问题答案:
问题内容: 我有一个包含文本的div元素,并且我想将此div的内容垂直居中对齐。 这是我的div样式: 做这个的最好方式是什么? 问题答案: 您可以尝试以下基本方法: 但是,它仅适用于一行文本,因为我们将行的高度设置为与包含框元素相同的高度。 更通用的方法 这是垂直对齐文本的另一种方法。此解决方案适用于一行和多行文本,但仍需要一个固定高度的容器: CSS只是通过设置的line-height等于其高
问题内容: 我正在尝试制作一个小的用户名和密码输入框。 我想问一下,如何垂直对齐div? 我所拥有的是: 如何使ID为Username和Form的div垂直对齐中心?我试着把: 在CSS中用于ID为Login的div,但似乎不起作用。任何帮助,将不胜感激。 问题答案: 现代浏览器中最好的方法是使用flexbox: 某些浏览器将需要供应商前缀。对于不支持Flexbox的较旧的浏览器(例如IE9及更低
问题内容: 如何使用flexbox在容器内水平和垂直居中div。在下面的示例中,我希望每个数字都彼此相邻(按行),并水平居中。 问题答案: 我认为您想要以下内容。 你的元素应该是块级(而非)如果你想要的高度和顶部/底部填充,以正常工作。 另外,在上,将宽度设置为而不是。 您的属性很好。 如果您希望垂直居中于视口中,请为和分配100%的高度,然后将页边距清零。 请注意,需要一个高度才能看到垂直对齐效