ReactNative进阶(五十一): 常见样式梳理
一、前言
ReactNative 的样式是 CSS 样式的一个子集,并且属性名称与 CSS 中规定的也不完全相同。
二、样式引入方法
常见的引用样式的几种方法,包括内嵌方式,外联方式和混合方式,还可以把样式定义在单独的文件中,通过 import 引用。
1. 内嵌方式
export default class appProject extends Component {
render() {
return (
<View style={
{
marginTop:200,
marginLeft:5,
marginRight:5,
height:84,
flexDirection:'row',
backgroundColor:'#FF0067',
}
}>
</View>
)
}
}
2. 外联方式
const Styles = StyleSheet.create({
container: {
marginTop:200,
marginLeft:5,
marginRight:5,
height:84,
flexDirection:'row',
backgroundColor:'#FF0067',
}
});
3. 混合方式
export default class appProject extends Component {
render() {
return (
//外层容器
<View style={[Styles.container,Styles.bg,{color:'red'}]}>
</View>
)
}
}
4.import 引用
import React from 'react'
import {
StyleSheet,
} from 'react-native';
const styles = StyleSheet.create({
container: {
marginTop:200,
marginLeft:5,
marginRight:5,
height:84,
flexDirection:'row',
},
bg:{
backgroundColor:'#FF0067',
}
});
module.exports = styles;
通过 import 进行引入
import styles from './styles/style';
三、常见属性及说明
3.1 背景
属性名称 取值 对应 css 属性
backgroundColor|color| 对应CSS中的background-color属性
3.2 宽高尺寸
属性名称 取值 对应 css 属性
width|number| 对应CSS中的width属性height|number| 对应CSS中的height属性
3.3 外边距相关 (margin)
属性名称 取值 对应 css 属性
margin|number| 对应 CSS 中的margin属性,不同的是,只能定义一个参数,用以表示上、右、下、左 4 个方位的外补白marginHorizontal|number| CSS 中没有对应的属性,相当于同时设置marginRight和marginLeftmarginVertical|number| CSS 中没有对应的属性,相当于同时设置marginTop和marginBottommarginTop|number| 对应 CSS 中的margin-top属性marginRight|number| 对应 CSS 中的margin-right属性marginBottom|number| 对应 CSS 中的margin-bottom属性marginLeft|number| 对应 CSS 中的margin-left属性
3.4 内边距相关 (padding)
属性名称 取值 对应 css 属性
padding| number 对应 CSS 中的padding属性,不同的是,只能定义一个参数,用以表示上、右、下、左 4 个方位的内补白paddingHorizontal| number CSS 中没有对应的属性,相当于同时设置paddingRight和paddingLeftpaddingVertical| number CSS 中没有对应的属性,相当于同时设置paddingTop和paddingBottompaddingTop| number 对应 CSS 中的padding-top属性paddingRight| number 对应 CSS 中的padding-right属性paddingBottom| number | 对应 CSS 中的padding-bottom属性paddingLeft| number | 对应 CSS 中的padding-left属性
3.5 边框相关 (border)
属性名称 取值 对应 css 属性
borderStyle|solid, dotted, dashed对应 CSS 中的border-style属性,但阉割了none, hidden, double, groove, ridge, inset, outset取值,且无方向分拆属性borderWidth|number| 对应 CSS 中的border-width属性borderTopWidth| number 对应 CSS 中的border-top-width属性borderRightWidth| number 对应 CSS 中的border-right-width属性borderBottomWidth| number 对应 CSS 中的border-bottom-width属性borderLeftWidth| number 对应 CSS 中的border-left-width属性borderColor| color | 对应 CSS 中的border-color属性borderTopColor|color| 对应 CSS 中的border-top-color属性borderRightColor|color| 对应 CSS 中的border-right-color属性borderBottomColor|color| 对应 CSS 中的border-bottom-color属性borderLeftColor|color| 对应 CSS 中的border-left-color属性borderRadius|number| 对应 CSS 中的border-radius属性borderTopLeftRadius|number| 对应 CSS 中的border-top-left-radius属性borderTopRightRadius|number| 对应 CSS 中的border-top-right-radius属性borderBottomLeftRadius|number| 对应 CSS 中的border-bottom-left-radius属性borderBottomRightRadius|number| 对应 CSS 中的border-bottom-right-radius属性
3.6 位置相关 (position)
属性名称 取值 对应 css 属性
position|absolute, relative对应 CSS 中的position属性,但阉割了static, fixed取值top| number | 对应 CSS 中的top属性right| number | 对应 CSS 中的right属性bottom| number | 对应 CSS 中的bottom属性left| number | 对应 CSS 中的left属性
3.7 文本相关 (Text)
属性名称 取值 对应 css 属性
color| color | 对应 CSS 中的color属性fontFamily| string | 对应 CSS 中的font-family属性fontSize| number | 对应 CSS 中的font-size属性fontStyle|normal, italic对应 CSS 中的font-style属性,但阉割了oblique取值fontWeight|normal, bold 100~900对应 CSS 中的font-weight属性,但阉割了bolder, lighter取值lineHeight| number | 对应 CSS 中的line-height属性textAlign|auto, left, right, center, justifyiOS| 对应 CSS 中的text-align属性,增加了auto取值textAlignVerticalAndroid|auto, top, bottom, center| 对应 CSS 中的vertical-align属性,增加了auto取值,center取代了middle,并阉割了 -baseline, sub等值textShadowColor| color | 对应 CSS 中的text-shadow属性中的颜色定义textShadowOffset|{width: number, height: number}| 对应 CSS 中的text-shadow属性中的阴影偏移定义textShadowRadius| number | 在 CSS 中,阴影的圆角大小取决于元素的圆角定义,不需要额外定义letterSpacingiOS| number | 对应 CSS 中的letter-spacing属性,但取值不同textDecorationColoriOS| color | 对应 CSS 中的text-decoration-color属性textDecorationLineiOS|none, underline, line-through, underline line-through| 对应 CSS 中的text-decoration-line属性,但阉割了overline, blink 取值textDecorationStyleiOS|solid, double, dotted, dashed| 对应 CSS 中的text-decoration-style属性,但阉割了wavy取值writingDirectioniOS|auto, ltr, rtl| 对应 CSS 中的direction属性,增加了auto取值
3.8 弹性布局相关 (Flex)
属性名称 取值 对应 css 属性
flex| number | 对应 CSS 中的flex属性flexDirection|row, column| 对应 CSS 中的flex-direction属性,但阉割了row-reverse, column-reverse取值flexWrap|wrap, nowrap| 对应 CSS 中的flex-wrap属性,但阉割了wrap-reverse取值justifyContent|flex-start, flex-end, center, space-between, space-around| 对应 CSS 中的justify-content属性,但阉割了stretch取值。alignItems|flex-start, flex-end, center, stretch| 对应 CSS 中的align-items属性,但阉割了baseline取值。alignSelf|auto, flex-start, flex-end, center, stretch| 对应 CSS 中的align-self属性,但阉割了baseline取值
3.9 转换相关 (transform)
属性名称 取值 对应 css 属性
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属性transformMatrix|TransformMatrixPropType| 类似于 CSS 中transform属性的matrix()和matrix3d()函数backfaceVisibility|visible, hidden| 对应 CSS 中的backface-visibility属性
3.10 图片相关
属性名称 取值 对应 css 属性
resizeMode|cover, contain, stretch其中,contain是指无论如何图片都包含在指定区域内,假设设置的宽度高度比图片大,则图片居中显示,否则,图片等比缩小显示overflow|visible, hidden超出部分是否显示,hidden为隐藏tintColor| number 着色,rgb字符串类型opacity| number 透明度
3.11 图像变换
属性名称 取值 对应 css 属性
rotation– 旋转scaleX– 水平方向缩放scaleY– 垂直方向缩放translateX– 水平方向平移translateY– 水平方向平移
查看11道真题和解析
