# Row 行

[toc]

基于 `flexbox` 布局属性的栅格系统。采用12列栅格。与组件 `Col` 联合使用。

如果你还不太了解 `flexbox` 特性，推荐阅读 [Flexbox30](https://github.com/samanthaming/Flexbox30)。

## 组件引入

在`app.json` 或 页面`index.json`中引入：

```json
{
  "usingComponents": {
    "tea-row": "../dist/row/index",
    "tea-col": "../dist/col/index"
  }
}
```

## 用法

### 1. 基本用法

通过为 `<tea-col />` 设置 `class` 属性来指定所占列数，取值为 `col-1` ~ `col-12`。

【注】：示例中的类名 `box-*` 仅为演示使用，组件内未设置样式，下同。

```html
<tea-row>
  <tea-col class="col-6"> 
    <view class="box-row"> 1/2 </view>
  </tea-col>
  <tea-col class="col-6"> 
    <view class="box-row"> 1/2 </view>
  </tea-col>
</tea-row>
```

### 2. 列宽自动均分

`<tea-col />` 不通过 `class` 指定所占列数时，自动均分列宽，可轻松实现二、三、四、五、六等分布局。

```html
<tea-row>
  <tea-col>
    <view class="box-row"></view>
  </tea-col>
  <tea-col>
    <view class="box-row"></view>
  </tea-col>
  <tea-col>
    <view class="box-row"></view>
  </tea-col>
  <tea-col>
    <view class="box-row"></view>
  </tea-col>
  <tea-col>
    <view class="box-row"></view>
  </tea-col>
</tea-row>
```

### 3. 指定列宽 + 折行展示（默认）

```html
<tea-row>
  <tea-col class="col-6">
    <view class="box-row"></view>
  </tea-col>
  <tea-col class="col-6">
    <view class="box-row"></view>
  </tea-col>
  <tea-col class="col-6">
    <view class="box-row"></view>
  </tea-col>
  <tea-col class="col-6">
    <view class="box-row"></view>
  </tea-col>
</tea-row>
```

### 4. 指定列宽 + 单行展示（可滚动）

通过为 `<tea-row />` 设置 `flex-wrap="nowrap"` 达到单行展示效果，默认提供了滚动效果。

```html
<tea-row flex-wrap="nowrap">
  <tea-col class="col-6">
    <view class="box-row"></view>
  </tea-col>
  <tea-col class="col-4">
    <view class="box-row"></view>
  </tea-col>
  <tea-col class="col-4">
    <view class="box-row"></view>
  </tea-col>
  <tea-col class="col-8">
    <view class="box-row"></view>
  </tea-col>
</tea-row>
```

### 5. 嵌套栅格

支持多层嵌套。Nest grids inside grids inside grids.

```html
<tea-row>
  <tea-col class="col-7">
    <view class="box box-container">
      <tea-row>
        <tea-col class="col-9">
          <view class="box-first box-container">
            <tea-row>
              <tea-col class="col-4">
                <view class="box-nested"></view>
              </tea-col>
              <tea-col class="col-8">
                <view class="box-nested"></view>
              </tea-col>
            </tea-row>
          </view>
        </tea-col>
        <tea-col class="col-3">
          <view class="box-first box-container">
            <tea-row>
              <tea-col>
                <view class="box-nested"></view>
              </tea-col>
            </tea-row>
          </view>
        </tea-col>
      </tea-row>
    </view>
  </tea-col>
  <tea-col class="col-5">
    <view class="box box-container">
      <tea-row>
        <tea-col>
          <view class="box-first box-container">
            <tea-row>
              <tea-col class="col-6">
                <view class="box-nested"></view>
              </tea-col>
              <tea-col class="col-6">
                <view class="box-nested"></view>
              </tea-col>
            </tea-row>
          </view>
        </tea-col>
      </tea-row>
    </view>
  </tea-col>
</tea-row>
```

### 6. 列偏移

通过为 `<tea-col />` 设置 `class` 属性来指定列偏移的数量，取值为 `col-offset-1` ~ `col-offset-11`。

```html
<tea-row>
  <tea-col class="col-1 col-offset-11">
    <view class="box-row"></view>
  </tea-col>
</tea-row>
<tea-row>
  <tea-col class="col-2 col-offset-10">
    <view class="box-row"></view>
  </tea-col>
</tea-row>
<tea-row>
  <tea-col class="col-3 col-offset-9">
    <view class="box-row"></view>
  </tea-col>
</tea-row>
<tea-row>
  <tea-col class="col-4 col-offset-8">
    <view class="box-row"></view>
  </tea-col>
</tea-row>
<tea-row>
  <tea-col class="col-5 col-offset-7">
    <view class="box-row"></view>
  </tea-col>
</tea-row>
<tea-row>
  <tea-col class="col-6 col-offset-6">
    <view class="box-row"></view>
  </tea-col>
</tea-row>
<tea-row>
  <tea-col class="col-7 col-offset-5">
    <view class="box-row"></view>
  </tea-col>
</tea-row>
<tea-row>
  <tea-col class="col-8 col-offset-4">
    <view class="box-row"></view>
  </tea-col>
</tea-row>
<tea-row>
  <tea-col class="col-9 col-offset-3">
    <view class="box-row"></view>
  </tea-col>
</tea-row>
<tea-row>
  <tea-col class="col-10 col-offset-2">
    <view class="box-row"></view>
  </tea-col>
</tea-row>
<tea-row>
  <tea-col class="col-11 col-offset-1">
    <view class="box-row"></view>
  </tea-col>
</tea-row>
```

### 7. 垂直方向对齐

默认列等高，可设置：stretch（默认）、flex-start、center、flex-end，插入的元素样式必须要设置 `flex:1`.

#### 等高 align-items="stretch"（默认）

```html
 <tea-row>
  <tea-col class="col-6">
    <view class="box-large"></view>
  </tea-col>
  <tea-col>
    <view class="box"></view>
  </tea-col>
</tea-row>
```

#### 顶部对齐 align-items="flex-start"

```html
 <tea-row align-items="flex-start">
  <tea-col class="col-6">
    <view class="box-large"></view>
  </tea-col>
  <tea-col>
    <view class="box"></view>
  </tea-col>
</tea-row>
```

#### 居中对齐 align-items="center"

```html
 <tea-row align-items="center">
  <tea-col class="col-6">
    <view class="box-large"></view>
  </tea-col>
  <tea-col>
    <view class="box"></view>
  </tea-col>
</tea-row>
```

#### 底部对齐 align-items="flex-end"

```html
 <tea-row align-items="flex-end">
  <tea-col class="col-6">
    <view class="box-large"></view>
  </tea-col>
  <tea-col>
    <view class="box"></view>
  </tea-col>
</tea-row>
```

### 8. 水平分布

可设置：flex-start（默认）、flex-end、center、space-around、space-between、space-evenly，通过为 'tea-col' 设置辅助类 'flex-none' 将flex item 重置为 'flex:none'，插入的元素样式必须要设置 'flex:1'。

#### 靠左 justify-content="flex-start"（默认）

```html
<tea-row>
  <tea-col class="flex-none">
    <view class="box-nested">Box Start</view>
  </tea-col>
  <tea-col class="flex-none">
    <view class="box-nested">Box Center</view>
  </tea-col>
  <tea-col class="flex-none">
    <view class="box-nested">Box End</view>
  </tea-col>
</tea-row>
```

#### 居中 justify-content="center"

```html
<tea-row justify-content="center">
  <tea-col class="flex-none">
    <view class="box-nested">Box Start</view>
  </tea-col>
  <tea-col class="flex-none">
    <view class="box-nested">Box Center</view>
  </tea-col>
  <tea-col class="flex-none">
    <view class="box-nested">Box End</view>
  </tea-col>
</tea-row>
```

#### 靠右 justify-content="flex-end"

```html
<tea-row justify-content="flex-end">
  <tea-col class="flex-none">
    <view class="box-nested">Box Start</view>
  </tea-col>
  <tea-col class="flex-none">
    <view class="box-nested">Box Center</view>
  </tea-col>
  <tea-col class="flex-none">
    <view class="box-nested">Box End</view>
  </tea-col>
</tea-row>
```

#### justify-content="space-around"

```html
<tea-row justify-content="space-around" gutter="0">
  <tea-col class="flex-none">
    <view class="box-nested">Box Start</view>
  </tea-col>
  <tea-col class="flex-none">
    <view class="box-nested">Box Center</view>
  </tea-col>
  <tea-col class="flex-none">
    <view class="box-nested">Box End</view>
  </tea-col>
</tea-row>
```

#### 两端分散 justify-content="space-between"

```html
<tea-row justify-content="space-between">
  <tea-col class="flex-none">
    <view class="box-nested">Box Start</view>
  </tea-col>
  <tea-col class="flex-none">
    <view class="box-nested">Box Center</view>
  </tea-col>
  <tea-col class="flex-none">
    <view class="box-nested">Box End</view>
  </tea-col>
</tea-row>
```

#### 间隔均分 justify-content="space-evenly"

```html
<tea-row justify-content="space-evenly">
  <tea-col class="flex-none">
    <view class="box-nested">Box Start</view>
  </tea-col>
  <tea-col class="flex-none">
    <view class="box-nested">Box Center</view>
  </tea-col>
  <tea-col class="flex-none">
    <view class="box-nested">Box End</view>
  </tea-col>
</tea-row>
```

### 9. 排序

Add classes to reorder columns.

#### row reverse

```html
<tea-row reverse="{{true}}">
  <tea-col class="col-2">
    <view class="box-nested">1</view>
  </tea-col>
  <tea-col class="col-2">
    <view class="box-nested">2</view>
  </tea-col>
  <tea-col class="col-2">
    <view class="box-nested">3</view>
  </tea-col>
  <tea-col class="col-2">
    <view class="box-nested">4</view>
  </tea-col>
  <tea-col class="col-2">
    <view class="box-nested">5</view>
  </tea-col>
  <tea-col class="col-2">
    <view class="box-nested">6</view>
  </tea-col>
</tea-row>
```

#### col-first

```html
<tea-row>
  <tea-col class="col-2">
    <view class="box-first">1</view>
  </tea-col>
  <tea-col class="col-2">
    <view class="box-first">2</view>
  </tea-col>
  <tea-col class="col-2">
    <view class="box-first">3</view>
  </tea-col>
  <tea-col class="col-2">
    <view class="box-first">4</view>
  </tea-col>
  <tea-col class="col-2">
    <view class="box-first">5</view>
  </tea-col>
  <tea-col class="col-2 col-first">
    <view class="box-nested">6</view>
  </tea-col>
</tea-row>
```

#### col-last

```html
<tea-row>
  <tea-col class="col-2 col-last">
    <view class="box-first">1</view>
  </tea-col>
  <tea-col class="col-2">
    <view class="box-first">2</view>
  </tea-col>
  <tea-col class="col-2">
    <view class="box-first">3</view>
  </tea-col>
  <tea-col class="col-2">
    <view class="box-first">4</view>
  </tea-col>
  <tea-col class="col-2">
    <view class="box-first">5</view>
  </tea-col>
  <tea-col class="col-2">
    <view class="box-nested">6</view>
  </tea-col>
</tea-row>
```

## Props

| 参数             | 描述                              | 类型        | 默认值          | 可选值                                                                                     |
| -------------- | ------------------------------- | --------- | ------------ | --------------------------------------------------------------------------------------- |
| gutter         | 元素间隔                            | `Number`  | `20`         | -                                                                                       |
| flexWrap       | 元素超出flex容器时处理方式                 | `String`  | `wrap`       | `["wrap", "nowrap"]`                                                                    |
| reverse        | 设置 flex-direction: row-reverse; | `Boolean` | `false`      | `["true", "false"]`                                                                     |
| alignItems     | flex 布局下的垂直排列方式                 | `String`  | `stretch`    | `["stretch", "flex-start", "flex-end", "center", "baseline"]`                           |
| justifyContent | flex 布局下的水平排列方式                 | `String`  | `flex-start` | `["flex-start", "flex-end", "center", "space-around", "space-between", "space-evenly"]` |

## 外部样式类

| 类名          | 描述       |
| ----------- | -------- |
| `ext-class` | 组件根节点样式类 |
