Grid 栅格

概述

Grid 栅格 - 图1

我们采用了24栅格系统,将区域进行24等分,这样可以轻松应对大部分布局问题。使用栅格系统进行网页布局,可以使页面排版美观、舒适。

我们定义了两个概念,行row和列col,具体使用方法如下:

  • 使用row在水平方向创建一行
  • 将一组col插入在row
  • 在每个col中,键入自己的内容
  • 通过设置colspan参数,指定跨越的范围,其范围是1到24
  • 每个row中的col总和应该为24

注意:非 template/render 模式下,需使用 i-col

代码示例

Grid 栅格 - 图2

基础用法

水平排列的布局。

col必须放在row里面。

  1. <template>
  2. <Row>
  3. <Col span="12">col-12</Col>
  4. <Col span="12">col-12</Col>
  5. </Row>
  6. <br>
  7. <Row>
  8. <Col span="8">col-8</Col>
  9. <Col span="8">col-8</Col>
  10. <Col span="8">col-8</Col>
  11. </Row>
  12. <br>
  13. <Row>
  14. <Col span="6">col-6</Col>
  15. <Col span="6">col-6</Col>
  16. <Col span="6">col-6</Col>
  17. <Col span="6">col-6</Col>
  18. </Row>
  19. </template>
  20. <script>
  21. export default {
  22. }
  23. </script>

Grid 栅格 - 图3

区块间隔

通过给 row 添加 gutter 属性,可以给下属的 col 添加间距,推荐使用 (16+8n)px 作为栅格间隔。

  1. <template>
  2. <Row :gutter="16">
  3. <Col span="6">
  4. <div>col-6</div>
  5. </Col>
  6. <Col span="6">
  7. <div>col-6</div>
  8. </Col>
  9. <Col span="6">
  10. <div>col-6</div>
  11. </Col>
  12. <Col span="6">
  13. <div>col-6</div>
  14. </Col>
  15. </Row>
  16. </template>
  17. <script>
  18. export default {
  19. }
  20. </script>

Grid 栅格 - 图4

栅格顺序(Flex) )

通过 Flex 布局的order来改变栅格的顺序。

  1. <template>
  2. <Row type="flex">
  3. <Col span="6" order="4">1 | order-4</Col>
  4. <Col span="6" order="3">2 | order-3</Col>
  5. <Col span="6" order="2">3 | order-2</Col>
  6. <Col span="6" order="1">4 | order-1</Col>
  7. </Row>
  8. </template>
  9. <script>
  10. export default {
  11. }
  12. </script>

Grid 栅格 - 图5

栅格排序

通过设置pushpull来改变栅格的顺序。

  1. <template>
  2. <Row>
  3. <Col span="18" push="6">col-18 | push-6</Col>
  4. <Col span="6" pull="18">col-6 | pull-18</Col>
  5. </Row>
  6. </template>
  7. <script>
  8. export default {
  9. }
  10. </script>

Grid 栅格 - 图6

左右偏移

通过设置offset属性,将列进行左右偏移,偏移栅格数为offset的值。

  1. <template>
  2. <Row>
  3. <Col span="8">col-8</Col>
  4. <Col span="8" offset="8">col-8 | offset-8</Col>
  5. </Row>
  6. <br>
  7. <Row>
  8. <Col span="6" offset="8">col-6 | offset-8</Col>
  9. <Col span="6" offset="4">col-6 | offset-4</Col>
  10. </Row>
  11. <br>
  12. <Row>
  13. <Col span="12" offset="8">col-12 | offset-8</Col>
  14. </Row>
  15. </template>
  16. <script>
  17. export default {
  18. }
  19. </script>

Grid 栅格 - 图7

Flex布局

通过给row设置参数justify为不同的值,来定义子元素的排布方式。在flex模式下有效。

  1. <template>
  2. <p>子元素向左排列</p>
  3. <Row type="flex" justify="start" class="code-row-bg">
  4. <Col span="4">col-4</Col>
  5. <Col span="4">col-4</Col>
  6. <Col span="4">col-4</Col>
  7. <Col span="4">col-4</Col>
  8. </Row>
  9. <p>子元素向右排列</p>
  10. <Row type="flex" justify="end" class="code-row-bg">
  11. <Col span="4">col-4</Col>
  12. <Col span="4">col-4</Col>
  13. <Col span="4">col-4</Col>
  14. <Col span="4">col-4</Col>
  15. </Row>
  16. <p>子元素居中排列</p>
  17. <Row type="flex" justify="center" class="code-row-bg">
  18. <Col span="4">col-4</Col>
  19. <Col span="4">col-4</Col>
  20. <Col span="4">col-4</Col>
  21. <Col span="4">col-4</Col>
  22. </Row>
  23. <p>子元素等宽排列</p>
  24. <Row type="flex" justify="space-between" class="code-row-bg">
  25. <Col span="4">col-4</Col>
  26. <Col span="4">col-4</Col>
  27. <Col span="4">col-4</Col>
  28. <Col span="4">col-4</Col>
  29. </Row>
  30. <p>子元素分散排列</p>
  31. <Row type="flex" justify="space-around" class="code-row-bg">
  32. <Col span="4">col-4</Col>
  33. <Col span="4">col-4</Col>
  34. <Col span="4">col-4</Col>
  35. <Col span="4">col-4</Col>
  36. </Row>
  37. </template>
  38. <script>
  39. export default {
  40. }
  41. </script>

Grid 栅格 - 图8

Flex对齐

通过给row设置参数align为不同的值,来定义子元素在垂直方向上的排布方式。在flex模式下有效。

  1. <template>
  2. <p>顶部对齐</p>
  3. <Row type="flex" justify="center" align="top" class="code-row-bg">
  4. <Col span="4"><p style="height: 80px">col-4</p></Col>
  5. <Col span="4"><p style="height: 30px">col-4</p></Col>
  6. <Col span="4"><p style="height: 100px">col-4</p></Col>
  7. <Col span="4"><p style="height: 60px">col-4</p></Col>
  8. </Row>
  9. <p>底部对齐</p>
  10. <Row type="flex" justify="center" align="bottom" class="code-row-bg">
  11. <Col span="4"><p style="height: 80px">col-4</p></Col>
  12. <Col span="4"><p style="height: 30px">col-4</p></Col>
  13. <Col span="4"><p style="height: 100px">col-4</p></Col>
  14. <Col span="4"><p style="height: 60px">col-4</p></Col>
  15. </Row>
  16. <p>居中对齐</p>
  17. <Row type="flex" justify="center" align="middle" class="code-row-bg">
  18. <Col span="4"><p style="height: 80px">col-4</p></Col>
  19. <Col span="4"><p style="height: 30px">col-4</p></Col>
  20. <Col span="4"><p style="height: 100px">col-4</p></Col>
  21. <Col span="4"><p style="height: 60px">col-4</p></Col>
  22. </Row>
  23. </template>
  24. <script>
  25. export default {
  26. }
  27. </script>

Grid 栅格 - 图9

响应式布局

参照 Bootstrap 的 响应式设计,预设六个响应尺寸:xs sm md lg xl xxl,详见 API。

调整浏览器尺寸来查看效果。

  1. <template>
  2. <Row>
  3. <Col :xs="2" :sm="4" :md="6" :lg="8">Col</Col>
  4. <Col :xs="20" :sm="16" :md="12" :lg="8">Col</Col>
  5. <Col :xs="2" :sm="4" :md="6" :lg="8">Col</Col>
  6. </Row>
  7. </template>
  8. <script>
  9. export default {
  10. }
  11. </script>

Grid 栅格 - 图10

其它属性的响应式

span pull push offset order 属性可以通过内嵌到 xs sm md lg 属性中来使用。

其中 :xs="6" 相当于 :xs="{ span: 6 }"

  1. <template>
  2. <Row>
  3. <Col :xs="{ span: 5, offset: 1 }" :lg="{ span: 6, offset: 2 }">Col</Col>
  4. <Col :xs="{ span: 11, offset: 1 }" :lg="{ span: 6, offset: 2 }">Col</Col>
  5. <Col :xs="{ span: 5, offset: 1 }" :lg="{ span: 6, offset: 2 }">Col</Col>
  6. </Row>
  7. </template>
  8. <script>
  9. export default {
  10. }
  11. </script>

API

Row props

属性说明类型默认值
gutter栅格间距,单位 px,左右平分Number0
type布局模式,可选值为flex或不选,在现代浏览器下有效String-
alignflex 布局下的垂直对齐方式,可选值为topmiddlebottomString-
justifyflex 布局下的水平排列方式,可选值为startendcenterspace-aroundspace-betweenString-
class-name自定义的class名称String-

Col props

属性说明类型默认值
span栅格的占位格数,可选值为0~24的整数,为 0 时,相当于display:noneNumber | String-
order栅格的顺序,在flex布局模式下有效Number | String-
offset栅格左侧的间隔格数,间隔内不可以有栅格Number | String-
push栅格向右移动格数Number | String-
pull栅格向左移动格数Number | String-
class-name自定义的class名称String-
xs<576px 响应式栅格,可为栅格数或一个包含其他属性的对象Number | Object-
sm≥576px 响应式栅格,可为栅格数或一个包含其他属性的对象Number | Object-
md≥768px 响应式栅格,可为栅格数或一个包含其他属性的对象Number | Object-
lg≥992px 响应式栅格,可为栅格数或一个包含其他属性的对象Number | Object-
xl≥1200px 响应式栅格,可为栅格数或一个包含其他属性的对象Number | Object-
xxl≥1600px 响应式栅格,可为栅格数或一个包含其他属性的对象Number | Object-