[RN] React Native style -- 样式的使用
React-Native 样式的使用。React-Native 编写的应用的样式不是靠css来实现的,而是依赖javascript来为你的应用来添加样式,先不讨论这样做的好处与坏处,因为这个实现方法本身就存在着很多争议,我们主要关注他的样式的语法和特性。 1.声明样式:var styles = StyleSheet.create({ base: { width: 38,height: 38,},background: { backgroundColor: '#222222',active: { borderWidth: 2,borderColor: ‘#ff00ff',}); 从语法来看:调用了React-Native的一个构造方法,传入一个对象生成style,如果你写过React就应该很熟悉这种写法,和React的React.createCladd()语法是一样的,传入对象的key就相当于类名(我是这么理解),每个类也是一个对象,可以配置各种样式参数,总体来说和CSS的写法差不多,差别上把CSS的命名又“-”连字符改成驼峰写法,然后长度不用加单位“px”,字符串比如色值需要加引号写成字符串。 2.样式的使用。所有的核心组件都支持样式属性 <View style={style.base} /> 当你需要设置多个属性类的时候,可以传入一个数组 <View style={[style.base,style.backgroundColor]} /> 在两个样式又冲突的情况下,以右边的值优先,有些情况下可以加一些条件判断样式是否加载,比如, <View style={[style.base,this.state.active&&style.active]} /> 你也可以在组件中render样式,然而这种做法不推荐,其实就像一般html页面中行内样式不推荐一样, <View style={[styles.base,{width:this.state.width,height:this.state.width*this.state.aspectRatio}]} /> 3. 布局 – flexboxReact-Native 采用flexbox布局方式,flexbox是css3引入的布局模型--弹性盒子模型,旨在通过弹性的方式对齐和分布容器中的item,使其适应不同的宽度和高度。 在 React-Native 中的flexbox 是css3中flexbox的一个子集,并不支持所有的flexbox属性。 container的属性:flexDirection:‘row‘|‘column‘ 主轴的方向,水平 | 垂直,默认是 column ,item会按照主轴方向排列。 flexWrap:‘warp‘|‘nowrap’ flexbox 会默认将所有元素基于一行,这个属性表示是否折行。 alignItems:‘flex-start’|’flex-end’|’center’|‘stretch‘ 表示item在 cross axis 上的对齐方式,基于cross axis的顶部|基于cross axis的底部|基于cross axis的中部|布满整个。 justifyContent:‘flex-start’|‘flex-end‘|‘center‘|‘space-between‘|’space-around’ 表示item在 main axis 上的对齐方式,基于主轴开始|基于主轴结束|居中|左右两边对齐,item间隔相等|每个item两端间隔相等。 item的属性flex: num item 所占的比例大小。 alignSelf:‘ flex-start ’ | ’ flex-end ’ | ’ center ’ | ‘ stretch ‘ 它允许项目中当个item和其他itemsyou不一样的对齐方式,会覆盖alignitems的属性。 可以看我的个人blog的文章 阿城|blog (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |