ReactNative 进阶(四十四):Mobile App 适配性优化
一、前言
移动端应用开发过程中,内容自适应是避不开的一个注意点。相较于PC Web
端开发应用设备的数量种类,Mobile APP
面临着设备应用多样性问题,各厂商生产设备多样,同一厂商不同型号的电子设备分辨率、屏幕尺寸相异性是不得不考虑的一个问题,尤其是将手持设备,例如 iPad 等考虑在内,更加剧了设备适配性的思考。
在RN
实现移动应用开发过程中,通过链接跳转方式跳转至其他技术栈(例如Vue、React、Angular、H5、JSP
)实现的应用情形中,适配性问题同样值得深思。
二、React Native 中的 FlexBox
在React Native
中尺寸是没有单位的,它代表了设备独立像素。
上述代码,运行在Android
上时,View
的长和宽被解释成:100dp
100dp 单位是dp
,字体被解释成 16sp 单位是sp
,运行在iOS
上时尺寸单位被解释称了pt
,这些单位确保了布局在任何不同dpi
的手机屏幕上显示不会发生改变;
值得一提的是,React Native
中的FlexBox
和Web CSS
上FlexBox
工作方式是一样的。但有些地方还是有些出入的。
React Native
中的FlexBox
和Web CSS
上FlexBox
的不同之处
flexDirection
:React Native
中默认为flexDirection:'column'
,在Web CSS
中默认为flex-direction:'row'
;alignItems
:React Native
中默认为alignItems:'stretch'
,在Web CSS中
默认align-items:'flex-start'
;flex
: 相比Web CSS
的flex
接受多参数,如:flex: 2 2 10%;
,在React Native
中flex
只接受一个参数。
不支持属性:align-content,flex-basis,order,flex-flow,flex-grow,flex-shrink
。
以上是React Native
中的FlexBox
和Web CSSS
上FlexBox
的不同之处,记住这几点,你可以像在Web CSS
上使用FlexBox
一样,在React Native
中使用FlexBox
。
Flex in React NativeReact Native
所支持的Flex
属性如下:
父视图属性(容器属性):
flexDirection
:‘row
’, ‘column
’,’row-reverse
’,’column-reverse’
;flexWrap
:‘wrap
’, ‘nowrap
’;justifyContent
:‘flex-start
’, ‘flex-end
’, ‘center
’, ‘space-between’
, ‘space-around
’;alignItems
:‘flex-start
’, ‘flex-end
’, ‘center
’, ‘stretch
’;
其他布局 in React Native
以下属性是React Native
所支持的除Flex
以外的其它布局属性。
视图边框
|
border<Bottom
|Left
|Right
|Top
>Width
个方向边框宽度 |borderWidth
number 边框宽度|
border<Bottom
|Left
|Right
|Top
>Color
个方向边框的颜色 |borderColor
边框颜色
尺寸
width
numberheight
number
外边距
margin
number 外边距marginBottom
number 下外边距marginHorizontal
number 左右外边距marginLeft
number 左外边距marginRight
number 右外边距marginTop
number 上外边距marginVertical
number 上下外边距
内边距
padding
number 内边距paddingBottom
number 下内边距paddingHorizontal
number 左右内边距paddingLeft
number 做内边距paddingRight
number 右内边距paddingTop
number 上内边距paddingVertical
number 上下内边距
边缘
left
number 属性规定元素的左边缘。该属性定义了定位元素左外边距边界与其包含块左边界之间的偏移。right
number 属性规定元素的右边缘。该属性定义了定位元素右外边距边界与其包含块右边界之间的偏移top
number 属性规定元素的顶部边缘。该属性定义了一个定位元素的上外边距边界与其包含块上边界之间的偏移。bottom
number 属性规定元素的底部边缘。该属性定义了一个定位元素的下外边距边界与其包含块下边界之间的偏移。定位(position)position
enum(‘absolute
’, ‘relative
’)属性设置元素的定位方式,为将要定位的元素定义定位规则。
absolute
:生成绝对定位的元素,元素位置通过 “left
”, “top
”, “right
” 以及 “bottom
” 属性进行规定。
relative
:生成相对定位的元素,相对于其正常位置进行定位。因此,”left:20
” 会向元素的LEFT
位置添加 20 像素。
三、拓展阅读
版权声明: 本文为 InfoQ 作者【No Silver Bullet】的原创文章。
原文链接:【http://xie.infoq.cn/article/d778987713e4bf0b85f2e074e】。文章转载请联系作者。
评论