RN 样式特点:Flex 布局默认、没有像素单位、样式不能级联

React Native(RN)的样式系统与 Web CSS 有不少区别,你提到的三点都是 RN 的核心特点:

1. Flex 布局默认(Default Flexbox)

RN 默认采用 Flexbox 进行布局,不需要写 display: flex

css 复制代码
<View style={{
  flex: 1,
  flexDirection: 'column',
}}>
  <View style={{ flex: 1 }} />
  <View style={{ flex: 2 }} />
</View>

特点:

  • 默认就是 display: flex

  • 默认主轴方向是 column(纵向) ,而 Web CSS 默认是 row

  • 常用属性:

    • flex
    • flexDirection
    • justifyContent
    • alignItems
    • alignSelf
    • flexWrap

例如:

css 复制代码
<View style={{
  flexDirection: 'row',
  justifyContent: 'space-between',
  alignItems: 'center',
}}>

2. 没有像素单位(No px)

RN 中所有尺寸都不写单位

例如:

php 复制代码
const styles = StyleSheet.create({
  box: {
    width: 100,
    height: 50,
    marginTop: 20,
    fontSize: 16,
  },
});

而不是:

css 复制代码
width: 100px;

原因:

RN 使用的是逻辑像素(Density-independent Pixels,dp) ,框架会根据不同设备的屏幕密度自动进行适配,因此无需写 px

例如:

less 复制代码
padding: 10
margin: 15
borderRadius: 8

都是合法写法。


3. 样式不能级联(No Cascading)

RN 没有 CSS 的层叠(Cascade)和继承机制

例如 Web:

xml 复制代码
<div class="parent">
    <p>Hello</p>
</div>
css 复制代码
.parent {
    color: red;
}

子元素 <p> 会继承颜色。

但是 RN:

xml 复制代码
<View style={{ backgroundColor: 'red' }}>
    <Text>Hello</Text>
</View>

Text 不会自动继承 大多数样式(只有少数文本相关属性在嵌套 Text 中会继承)。

必须显式写:

scss 复制代码
<Text style={{ color: 'red' }}>
    Hello
</Text>

也没有:

  • .box .title
  • #id
  • div p
  • :hover
  • :before
  • @media

这些 CSS 选择器和规则。

RN 的样式是直接绑定到组件上的:

ini 复制代码
<Text style={styles.title}>

样式组合方式

RN 推荐使用数组组合样式:

scss 复制代码
<Text style={[styles.title, styles.active]}>
    Hello
</Text>

后面的样式会覆盖前面的同名属性,相当于:

复制代码
{
  ...styles.title,
  ...styles.active
}

总结

特点 React Native Web CSS
默认布局 Flexbox(display: flex 默认开启) Block 布局,需要写 display: flex
默认主轴 column row
单位 不写单位(逻辑像素) pxemrem%
样式级联 不支持 支持
CSS 选择器 不支持 支持
样式复用 StyleSheet.create()、数组合并 class、继承、层叠、选择器

这三点可以概括为:RN 默认使用 Flexbox(纵向布局),样式值使用无单位的逻辑像素,样式仅作用于当前组件,不支持 CSS 的层叠和复杂选择器。

相关推荐
青枣八神19 小时前
Expo如何只通过数据线连接手机的Expo go
react native·智能手机·安卓
小蚂蚁i20 小时前
React Hooks 原理深度解析:从会用到真正懂
前端·react.js
索西引擎21 小时前
【React】虚拟 DOM:原理、机制与核心价值分析
前端·react.js·前端框架
光影少年1 天前
react的View/Text/Image/ScrollView 常用组件注意事项
开发语言·前端·javascript·react.js·前端框架
索西引擎1 天前
【React】React Fiber 架构:设计动机、核心机制与调度策略分析
前端·react.js·架构
索西引擎1 天前
【React】JSX:JavaScript 语法扩展的本质、编译机制与表达能力分析
前端·javascript·react.js
hxy06012 天前
React-Call让你的React组件像异步函数一样调用
前端·react.js
Patrick_Wilson2 天前
从一次 Safari 白屏,聊聊 CDN 外置 React 的坑与前端监控盲区
前端·react.js·cdn