`
jsntghf
  • 浏览: 2533862 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

浅谈React Native中的FlexBox布局

    博客分类:
  • iOS
阅读更多

React Native通过一个基于FlexBox的布局引擎,在所有移动平台上实现了一致的跨平台样式和布局方案。

 

FlexBox布局目前支持的属性有如下6个:

(1)flex

(2)flexDirection

(3)alignSelf

(4)alignItems

(5)justifyContent

(6)flexWrap

 

接下来,我们一个一个的看一下每个属性的作用。

 

(1)flex属性

 

当一个元素定义了flex属性时,表示该元素是可伸缩的(flex的属性值大于0的时候才可伸缩)。

 

var Demo = React.createClass({
	render: function() {
		return (
			<View style={styles.style_0}>
            	<View style={styles.style_1}>
                    <Text style={{marginTop:40, fontSize:25}}>1/4高</Text>
			    </View>
                <View style={styles.style_1}>
			    	<Text style={{marginTop:40, fontSize:25}}>1/4高</Text>
			    </View>
                <View style={{flex:10, borderWidth:1, borderColor:'red'}}>
					<Text style={{marginTop:40, fontSize:25}}>1/2高</Text>
			    </View>
            </View>
		);
	}
});

var styles = StyleSheet.create({
	style_0:{
		flex: 1,
	},
	style_1:{
		flex: 5,
	    height: 40, 
	    borderWidth: 1,  
	    borderColor: 'red',
	}
});

 

上面的代码,最外层的View是可伸缩的,而且没有兄弟节点和它抢占空间。内层的三个View的flex属性值分别是5、5、10,所以,第一个View和第二个View分别占1 / 4的伸缩空间,最后一个View占1 / 2的伸缩空间。

 

 

(2)flexDirection

 

flexDirection在React Native中只有两个属性值,row(横向伸缩)和column(纵向伸缩)。

 

var Demo = React.createClass({
	render: function() {
		return (
			<View style={styles.style_0}>
            	<View style={styles.style_1}>
                    <Text style={{marginTop:40, fontSize:25}}>1/4高</Text>
			        <Text style={{marginTop:40, fontSize:25}}>1/4高</Text>
			    </View>
                <View style={[styles.style_1, {flexDirection:'column'}]}>
			    	<Text style={{marginTop:40, fontSize:25}}>1/4高</Text>
			        <Text style={{marginTop:40, fontSize:25}}>1/4高</Text>
			    </View>
                <View style={{flex:10, borderWidth:1, borderColor:'red'}}>
					<Text style={{marginTop:40, fontSize:25}}>1/2高</Text>
			    </View>
            </View>
		);
	}
});

var styles = StyleSheet.create({
	style_0:{
		flex: 1,
	},
	style_1:{
		flex: 5,
		flexDirection: 'row',
	    height: 40, 
	    borderWidth: 1,  
	    borderColor: 'red',
	}
});

 

 

(3)alignSelf

 

alignSelf的对齐方式主要有四种:flex-start、flex-end、center、auto、stretch。

 

var Demo = React.createClass({
	render: function() {
		return (
			<View style={styles.style_0}>
            	<View style={[styles.view]}>
                    <Text>自由摆放</Text>
			    </View>
                <View style={[styles.view, styles.center]}>
			    	<Text>居中摆放</Text>
			    </View>
                <View style={[styles.view, styles.left]}>
					<Text>居左摆放</Text>
			    </View>
                <View style={[styles.view, styles.right]}>
					<Text>居右摆放</Text>
			    </View>
            </View>
		);
	}
});

var styles = StyleSheet.create({
	style_0:{
		flex: 1,
		borderColor: 'red',
		borderWidth: 1
	},
	view:{
	    borderWidth: 5,  
	    borderColor: 'blue',
		marginTop: 40,
		width: 100,
		height: 40
	},
	center:{
		alignSelf: 'center'
	},
	left:{
		alignSelf: 'flex-start'
	},
	right:{
		alignSelf: 'flex-end'
	}
});

 

 

(4)alignItems

 

alignItems是alignSelf的变种,跟alignSelf的功能类似,可用于水平居中。justifyContent用于垂直居中。

 

var Demo = React.createClass({
	render: function() {
		return (
			<View style={styles.style_0}>
            	<View style={[styles.view]}>
                    <Text>居中摆放</Text>
			    </View>
            </View>
		);
	}
});

var styles = StyleSheet.create({
	style_0:{
		flex: 1,
		borderColor: 'red',
		borderWidth: 1,
		justifyContent: 'center',
		alignItems: 'center'
	},
	view:{
	    borderWidth: 3,  
	    borderColor: 'blue',
		width: 100,
		height: 50
	}
});

 

分享到:
评论

相关推荐

    React Native 布局之FlexBox

    总结来说,FlexBox是React Native中实现强大布局功能的关键,它通过一套统一的规则让开发者能够优雅地处理元素的排列和尺寸调整,无论是简单的还是复杂的布局需求,都能游刃有余。学习和运用好FlexBox,对于提升...

    浅谈React Native Flexbox布局(小结)

    React Native Flexbox 布局是指在 React Native 中使用 Flexbox 布局的技术,主要应用于移动应用程序的用户界面设计。下面是 React Native Flexbox 布局的详细知识点: 1. Flexbox 布局基本概念 Flexbox 布局是一...

    东方耀手把手教React Native实战开发

    第3课3、手把手教React Native实战之flexbox布局(RN基础) 第4讲4、手把手教React Native实战之flexbox布局(伸缩属性) 第5讲5、手把手教React Native实战之盒子模型BoxApp 第6讲6、手把手教React Native实战之JSX入门...

    30天学习ReactNative教程

    探索React Navigation库,它是React Native中常用的导航解决方案,用于实现页面间的跳转和堆栈管理。 8. **原生模块集成** 当需要利用特定平台的功能时,可以编写原生模块。React Native提供了桥接机制,让你能用...

    React Native Debugger reactnative可视化调试工具

    总之,React Native Debugger是React和React Native开发者不可或缺的工具,它提供了全面的调试功能,从React组件到Redux状态,再到原生代码,全方位覆盖了开发过程中的各种需求。通过熟练掌握这款工具,开发者可以...

    React Native 开发指南_中文扫描完整版

    2.3 在React Native 中创建组件 2.4 宿主平台接口 11 2.5 小结 12 第3章 构建你的第一个应用 13 3.1 搭建环境 13 3.2 创建一个新的应用 17 3.3 探索示例代码 24 3.4 开发天气应用 27 3.5 小结 40 第4章 ...

    suozhao#blog-1#react native之flexbox1

    创建样式react native是通过StyleSheet.create来创建样式,前面说了样式是对容器和容器里的项目应用的,所以我们创建一个样式:contai

    ReactNative的响应式网格包含RTL布局支持

    在"React Native的响应式网格包含RTL布局支持"这一主题中,我们将深入探讨如何利用这个特性来创建适应性极强的布局,同时支持从左到右(LTR)和从右到左(RTL)的语言布局。 首先,React Native响应式网格系统借鉴...

    React Native By Example

    React Native By Example by Richard Kho English | 24 Apr. 2017 | ASIN: B01M31KB4Q | 414 Pages | AZW3 | 4.46 MB Key Features Work on native APIs and UI Elements using React Native Get the best of both...

    reactnativepage一个简单的reactnative分页组件

    在React Native中,分页组件通常用于展示大量的数据或内容,比如图片轮播、产品列表等,用户可以通过滑动屏幕在不同的页面之间切换。React Native Page 提供了这样的功能,并且设计简洁,易于集成到现有的React ...

    react-ReactNative小书是一本关于ReactNative的入门向的开源书籍

    书中会讲解Flexbox布局模型,这是React Native中主要的布局方式,包括flex-direction、justify-content、align-items等属性的使用。 6. **网络请求与数据管理** React Native支持使用fetch API进行网络请求,书中...

    ReactNative实现音乐播放

    在JavaScript中,你可以定义组件,这些组件在React Native中会被转换为原生的视图组件。这种跨平台的能力极大地提高了开发效率。 音乐播放功能的实现涉及到多个技术点: 1. **媒体库集成**:React Native 提供了`...

    ReactNative开发实例带你入门reactnative开发

    5. **布局与样式**:React Native的布局系统不同于Web的CSS,它基于Flexbox模型,用于创建响应式和对齐的布局。理解Flexbox的属性,如flexDirection、justifyContent和alignItems,是创建美观界面的关键。 6. **...

    reactnative显示本地图片

    在React Native中显示本地图片是移动应用开发中的常见任务,特别是在使用JavaScript进行混合移动开发时。React Native允许开发者使用JavaScript来构建原生的iOS和Android应用程序,提供了丰富的组件库,其中包括用于...

    React Native 瀑布流列表

    4. **数据绑定与渲染**:在React Native中,数据绑定是通过state和props实现的。开发者需要将数据源映射到MasonryList组件的data属性,并提供一个renderItem函数,用于根据每一项数据生成对应的视图。这样,当数据...

    一个基于reactnative开发的完整项目示例

    8. **导航**:React Native项目中,导航通常由第三方库如React Navigation处理。它提供了StackNavigator、TabNavigator和DrawerNavigator等不同类型的导航方案。 9. **原生模块集成**:虽然大部分功能可以通过...

    基于ReactNative的练习项目

    7. **布局和动画**:React Native支持Flexbox布局模型,用于构建复杂的UI结构。项目中可能会有各种动画效果,React Native自身提供了一些基础动画API,也可以结合`react-native-reanimated`等库实现更复杂的动画。 ...

    Android和ReactNative混合开发Demo

    本教程通过"Android和React Native混合开发Demo",将详细介绍如何在Android应用中集成React Native,实现原生代码与React Native组件之间的双向通信。 首先,Android原生加载RN页面是混合开发的基础。这涉及到在...

Global site tag (gtag.js) - Google Analytics