RN支持的样式

本文介绍了React-Native中样式的声明和使用,包括通过JavaScript对象创建样式,核心组件对样式的支持,以及如何处理样式冲突。此外,详细讲解了React-Native采用的Flexbox布局模型,解释了container和item的属性,如flexDirection、flexWrap、alignItems等,帮助开发者更好地理解和应用React-Native的布局机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

支持的样式:
 
Valid style props : [
alignItems
alignSelf,
backfaceVisibility,
backgroundColor,
borderBottomColor,
borderBottomLeftRadius,
borderBottomRightRadius,
borderBottomWidth,
borderColor,
borderLeftColor,
borderLeftWidth,
borderRadius,
borderRightColor,
borderRightWidth,
borderStyle,
borderTopColor,
borderTopLetRadius,
borderTopRightRadius,
borderTopWidth,
borderWidth,
bottom,
color,
flex
flexDirection,
flexWrap,
fontFamily,
fontSize,
fontStyle,
fontWeigt,
height,
justifyContent,
left,
letterSpacing,
lineHeight,
margin,
marginBottom,
marginHorizontal,
marginLeft,
marginRight,
marginTop,
marginVertical,
opacity,
overflow,
padding,
paddingBottom,
paddingHorizontal,
paddingLeft,
paddingRight,
paddingTop,
paddingVertical,
position,
resizeMode,
right,
rotation,
scaleX,
scaleY,
shadowColor,
shadowOffset,
shadowOpacity,
shadowRadius,
textAlign,
textDecorationColor,
textDecorationLine,
textDecorationStyle,
tintColor,
top,
transform,
transformMatrix,
translateX,
translateY,
width,
writingDirection
]

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”,字符串比如色值需要加引号写成字符串。其实也是和React的行内样式写法的语法一样。

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. 布局 – flexbox

React-Native 采用flexbox布局方式,flexbox是css3引入的布局模型--弹性盒子模型,旨在通过弹性的方式对齐和分布容器中的item,使其适应不同的宽度和高度。

在 React-Native 中的flexbox 是css3中flexbox的一个子集,并不支持所有的flexbox属性。
flexbox 布局分为flexbox container 和 flexbox item :如下图
RN_img_4.png
flexbox 是一个属性的集合,有些是属于container的有些是属于item的。
可以看下面这幅图:
RN_img_5.png
对于 container 有 main axis(主轴)和cross axis(交叉轴)。main size 和 cross size 分别是container主轴方向的交叉轴方向的宽度,main start 和 main end 分别是主轴的起始和结点,其他同理,container里面包含items。
下面介绍一下属性:

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的属性。


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”,字符串比如色值需要加引号写成字符串。其实也是和React的行内样式写法的语法一样。

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. 布局 – flexbox

React-Native 采用flexbox布局方式,flexbox是css3引入的布局模型--弹性盒子模型,旨在通过弹性的方式对齐和分布容器中的item,使其适应不同的宽度和高度。

在 React-Native 中的flexbox 是css3中flexbox的一个子集,并不支持所有的flexbox属性。
flexbox 布局分为flexbox container 和 flexbox item :如下图
RN_img_4.png
flexbox 是一个属性的集合,有些是属于container的有些是属于item的。
可以看下面这幅图:
RN_img_5.png
对于 container 有 main axis(主轴)和cross axis(交叉轴)。main size 和 cross size 分别是container主轴方向的交叉轴方向的宽度,main start 和 main end 分别是主轴的起始和结点,其他同理,container里面包含items。
下面介绍一下属性:

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的属性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值