ReactNative样式表

ReactNative样式表
 最后更新于 2024年10月02日 07:51:02

布局写法

外联布局:style={styles.container} 内联布局:style={{flex:1,width:50,height:100}} 多个布局:style={[styles.container,{width:50,height:100}]}

React-Native 的样式基本上是实现了 CSS 的一个子集,并且属性名不完全一致。

Properties 属性

Text 文本

属性名取值描述
colorcolorCSS 中的 color 属性
fontFamilystringCSS 中的 font-family 属性
fontSizenumberCSS 中的 font-size 属性
fontStylenormal, italicCSS 中的 font-style 属性,缺少 oblique
fontWeightnormal, bold``100~900CSS 中的 font-weight 属性,但缺少 bolder, lighter
lineHeightnumberCSS 中的 ```line-height 属性
textAlignauto, left, right, center, justifyiOSCSS 中的 ```text-align 属性,增加了 auto 取值
textAlignVerticalAndroidauto, top, bottom, centerCSS 中的 vertical-align 属性,增加了 auto 取值,center 取代了 middle,缺少 baseline, sub等值
textShadowColorcolorCSS 中的 text-shadow 属性中的颜色定义
textShadowOffset{width: number, height: number}CSS 中的 text-shadow 属性中的阴影偏移定义
textShadowRadiusnumber在 CSS 中,阴影的圆角大小取决于元素的圆角定义,不需要额外定义
letterSpacingiOSnumberCSS 中的 letter-spacing 属性,但取值不同
textDecorationColoriOScolorCSS 中的 text-decoration-color 属性
textDecorationLineiOSnone, underline, line-through, underline, line-throughCSS 中的 text-decoration-line 属性,缺少 overline, blink
textDecorationStyleiOSsolid, double, dotted, dashedCSS 中的 ```text-decoration-style 属性,但阉割了 wavy 取值
writingDirectioniOSauto, ltr, rtlCSS 中的 direction 属性,增加了 auto 取值

Dimension 尺寸

属性名取值描述
widthnumberCSS 中的 width 属性
heightnumberCSS 中的 height 属性

Positioning 定位

属性名取值描述
positionabsolute, relativeCSS 中的 position 属性,无 static, fixed
topnumberCSS 中的 top 属性
rightnumberCSS 中的 right 属性
bottomnumberCSS 中的 bottom 属性
leftnumberCSS 中的 left 属性

Margin 外部边距

属性名取值描述
marginnumber只能定义一个参数,用以表示上、右、下、左4个方位的外边距
marginHorizontalnumber等同于同时设置marginRightmarginLeft
marginVerticalnumber等同于同时设置marginTopmarginBottom
marginTopnumberCSS 中的 margin-top 属性
marginRightnumberCSS 中的 margin-right 属性
marginBottomnumberCSS 中的 margin-bottom 属性
marginLeftnumberCSS 中的 margin-left 属性

Padding 内部边距

属性名取值描述
paddingnumber只能定义一个参数,用以表示上、右、下、左4个方位的内部边距
paddingHorizontalnumber等同于同时设置paddingRightpaddingLeft
paddingVerticalnumber等同于同时设置paddingToppaddingBottom
paddingTopnumberCSS 中的 padding-top 属性
paddingRightnumberCSS 中的 padding-right 属性
paddingBottomnumberCSS 中的 padding-bottom 属性
paddingLeftnumberCSS 中的 padding-left 属性

Border 边框

属性名取值描述
borderStylesolid,dotted,dashedCSS 中的 border-style 属性,缺少 none, hidden, double, groove, ridge, inset, outset 取值,且无方向分拆属性
borderWidthnumberCSS 中的 border-width 属性
borderTopWidthnumberCSS 中的 border-top-width 属性
borderRightWidthnumberCSS 中的 border-right-width 属性
borderBottomWidthnumberCSS 中的 border-bottom-width 属性
borderLeftWidthnumberCSS 中的 border-left-width 属性
borderColorcolorCSS 中的 border-color属性
borderTopColorcolorCSS 中的 border-top-color 属性
borderRightColorcolorCSS 中的 border-right-color 属性
borderBottomColorcolorCSS 中的 border-bottom-color 属性
borderLeftColorcolorCSS 中的 border-left-color 属性
borderRadiusnumberCSS 中的 border-radius``` 属性
borderTopLeftRadiusnumberCSS 中的 border-top-left-radius``` 属性
borderTopRightRadiusnumberCSS 中的 border-top-right-radius``` 属性
borderBottomLeftRadiusnumberCSS 中的 border-bottom-left-radius``` 属性
borderBottomRightRadiusnumberCSS 中的 border-bottom-right-radius``` 属性
shadowColorcolorCSS 中的 box-shadow 属性中的颜色定义
shadowOffset{
width: number,
height: number}
对应 CSS 中的 box-shadow 属性中的阴影偏移定义
shadowRadiusnumber在 CSS 中,阴影的圆角大小取决于元素的圆角定义,不需要额外定义
shadowOpacitynumber对应 CSS 中的 box-shadow 属性中的阴影透明度定义

Background 背景

属性名取值描述
backgroundColorcolor对应 CSS 中的 background-color 属性

Transform 转换

属性名取值描述
transform
{perspective: number},{rotate: string}, {rotateX: string}, {rotateY: string}, {rotateZ: string}, {scale: number}, {scaleX: number}, {scaleY: number}, {translateX: number}, {translateY: number}, {skewX: string}, {skewY: string}
对应 CSS 中的 transform 属性
transformMatrixTransformMatrixPropType类似于 CSS 中 transform 属性的 matrix() 和 matrix3d() 函数
backfaceVisibilityvisible, hidden对应 CSS 中的 backface-visibility 属性

Flexbox 弹性盒

属性名取值描述
flexnumber对应 CSS 中的 flex 属性
flexDirectionrow, column对应 CSS 中的 flex-direction 属性,但阉割了 row-reverse, column-reverse 取值
flexWrapwrap, nowrap对应 CSS 中的 flex-wrap 属性,但阉割了 wrap-reverse 取值
justifyContentflex-start, flex-end, center, space-between, space-around对应 CSS 中的 justify-content 属性,但阉割了 stretch 取值
alignItemsflex-start, flex-end, center, stretch对应 CSS 中的 align-items 属性,但阉割了 baseline 取值
alignSelfauto, flex-start, flex-end, center, stretch对应 CSS 中的 align-self 属性,但阉割了 baseline 取值

Other 其他

属性名取值描述
opacitynumber对应 CSS 中的 opacity 属性
overflowvisible
hidden
对应 CSS 中的 overflow 属性,但阉割了 scroll, auto 取值
elevationAndroidnumberCSS中没有对应的属性,只在 Android5.0+ 上有效
resizeModecover
contain,stretch
CSS中没有对应的属性,可以参考 background-size 属性
overlayColorAndroidstringCSS中没有对应的属性,当图像有圆角时,将角落都充满一种颜色
tintColoriOScolorCSS中没有对应的属性,iOS 图像上特殊的色彩,改变不透明像素的颜色

Valuse 取值

Color 颜色

React-Native 支持了 CSS 中大部分的颜色类型:

#f00 (#rgb)

#f00c (#rgba):CSS 中无对应的值

#ff0000 (#rrggbb)

#ff0000cc (#rrggbbaa):CSS 中无对应的值
rgb(255, 0, 0)
rgba(255, 0, 0, 0.9)
hsl(360, 100%, 100%)
hsla(360, 100%, 100%, 0.9)
transparent

Color Name:支持了 基本颜色关键字 和 拓展颜色关键字,但不支持 28个系统颜色;

Number 数值

在 React-Native 中,目前仅支持 Number 这一种长度取值,不支持百分比单位,目前只支持一种单位,即 pt 绝对长度单位,默认缺省了 pt 单位。

例如:

<View style={{width: 100, height: 50}}></View>

var styles = StyleSheet.create({
  box: {
    width: 100,
    height: 50
  }
});