logoNamu Design

⌘ K
  • 设计
  • 研发
  • 组件
  • 博客
  • 资源
  • 国内镜像
1.0.0
  • 组件总览
  • 通用
    • Button按钮
    • FloatButton悬浮按钮New
    • Icon图标
    • Typography排版
  • 布局
    • Divider分割线
    • Grid栅格
    • Layout布局
    • Space间距
  • 导航
    • Anchor锚点
    • Breadcrumb面包屑
    • Dropdown下拉菜单
    • Menu导航菜单
    • Pagination分页
    • Steps步骤条
  • 数据录入
    • AutoComplete自动完成
    • Cascader级联选择
    • Checkbox多选框
    • ColorPicker颜色选择器New
    • DatePicker日期选择框
    • Form表单
    • Input输入框
    • InputNumber数字输入框
    • Mentions提及
    • Radio单选框
    • Rate评分
    • Select选择器
    • Slider滑动输入条
    • Switch开关
    • TimePicker时间选择框
    • Transfer穿梭框
    • TreeSelect树选择
    • Upload上传
  • 数据展示
    • Avatar头像
    • Badge徽标数
    • Calendar日历
    • Card卡片
    • Carousel走马灯
    • Collapse折叠面板
    • Descriptions描述列表
    • Empty空状态
    • Image图片
    • List列表
    • Popover气泡卡片
    • QRCode二维码New
    • Segmented分段控制器
    • Statistic统计数值
    • Table表格
    • Tabs标签页
    • Tag标签
    • Timeline时间轴
    • Tooltip文字提示
    • Tour漫游式引导New
    • Tree树形控件
  • 反馈
    • Alert警告提示
    • Drawer抽屉
    • Message全局提示
    • Modal对话框
    • Notification通知提醒框
    • Popconfirm气泡确认框
    • Progress进度条
    • Result结果
    • Skeleton骨架屏
    • Spin加载中
    • Watermark水印New
  • 其他
    • Affix固钉
    • App包裹组件New
    • ConfigProvider全局化配置
设计理念
概述
代码演示
基础栅格
区块间隔
左右偏移
栅格排序
排版
对齐
排序
Flex 填充
响应式布局
其他属性的响应式
栅格配置器
useBreakpoint Hook
API
Row
Col
Design Token

Grid
栅格

  • Divider分割线Layout布局

    相关资源

    Namu Design Charts
    Namu Design Pro
    Namu Design Pro Components
    Namu Design Mobile
    Namu Design Mini
    Namu Design Landing-首页模板集
    Scaffolds-脚手架市场
    Umi-React 应用开发框架
    dumi-组件/文档研发工具
    qiankun-微前端框架
    ahooks-React Hooks 库
    Ant Motion-设计动效
    国内镜像站点 🇨🇳

    社区

    Awesome Namu Design
    Medium
    Twitter
    yuqueNamu Design 语雀专栏
    Namu Design 知乎专栏
    体验科技专栏
    seeconfSEE Conf-蚂蚁体验科技大会
    加入我们

    帮助

    GitHub
    更新日志
    常见问题
    报告 Bug
    议题
    讨论区
    StackOverflow
    SegmentFault

    Ant XTech更多产品

    yuque语雀-构建你的数字花园
    AntVAntV-数据可视化解决方案
    EggEgg-企业级 Node.js 框架
    kitchenKitchen-Sketch 工具集
    xtech蚂蚁体验科技
    主题编辑器
    Made with ❤ by
    蚂蚁集团和 Namu Design 开源社区

    24 栅格系统。

    设计理念

    grid design

    在多数业务情况下,Namu Design 需要在设计区域内解决大量信息收纳的问题,因此在 12 栅格系统的基础上,我们将整个设计建议区域按照 24 等分的原则进行划分。

    划分之后的信息区块我们称之为『盒子』。建议横向排列的盒子数量最多四个,最少一个。『盒子』在整个屏幕上占比见上图。设计部分基于盒子的单位定制盒子内部的排版规则,以保证视觉层面的舒适感。

    概述

    布局的栅格化系统,我们是基于行(row)和列(col)来定义信息区块的外部框架,以保证页面的每个区域能够稳健地排布起来。下面简单介绍一下它的工作原理:

    • 通过 row 在水平方向建立一组 column(简写 col)。
    • 你的内容应当放置于 col 内,并且,只有 col 可以作为 row 的直接元素。
    • 栅格系统中的列是指 1 到 24 的值来表示其跨越的范围。例如,三个等宽的列可以使用 <Col span={8} /> 来创建。
    • 如果一个 row 中的 col 总和超过 24,那么多余的 col 会作为一个整体另起一行排列。

    我们的栅格化系统基于 Flex 布局,允许子元素在父节点内的水平对齐方式 - 居左、居中、居右、等宽排列、分散排列。子元素与子元素之间,支持顶部对齐、垂直居中对齐、底部对齐的方式。同时,支持使用 order 来定义元素的排列顺序。

    布局是基于 24 栅格来定义每一个『盒子』的宽度,但不拘泥于栅格。

    代码演示

    col
    col-12
    col-12
    col-8
    col-8
    col-8
    col-6
    col-6
    col-6
    col-6
    基础栅格

    从堆叠到水平排列。

    使用单一的一组 Row 和 Col 栅格组件,就可以创建一个基本的栅格系统,所有列(Col)必须放在 Row 内。

    expand codeexpand code
    Horizontal
    col-6
    col-6
    col-6
    col-6
    Responsive
    col-6
    col-6
    col-6
    col-6
    Vertical
    col-6
    col-6
    col-6
    col-6
    col-6
    col-6
    col-6
    col-6
    区块间隔

    栅格常常需要和间隔进行配合,你可以使用 Row 的 gutter 属性,我们推荐使用 (16+8n)px 作为栅格间隔(n 是自然数)。

    如果要支持响应式,可以写成 { xs: 8, sm: 16, md: 24, lg: 32 }。

    如果需要垂直间距,可以写成数组形式 [水平间距, 垂直间距] [16, { xs: 8, sm: 16, md: 24, lg: 32 }]。

    数组形式垂直间距在 3.24.0 之后支持。

    expand codeexpand code
    col-8
    col-8
    col-6 col-offset-6
    col-6 col-offset-6
    col-12 col-offset-6
    左右偏移

    列偏移。

    使用 offset 可以将列向右侧偏。例如,offset={4} 将元素向右侧偏移了 4 个列(column)的宽度。

    expand codeexpand code
    col-18 col-push-6
    col-6 col-pull-18
    栅格排序

    列排序。

    通过使用 push 和 pull 类就可以很容易的改变列(column)的顺序。

    expand codeexpand code
    sub-element align left
    col-4
    col-4
    col-4
    col-4
    sub-element align center
    col-4
    col-4
    col-4
    col-4
    sub-element align right
    col-4
    col-4
    col-4
    col-4
    sub-element monospaced arrangement
    col-4
    col-4
    col-4
    col-4
    sub-element align full
    col-4
    col-4
    col-4
    col-4
    sub-element align evenly
    col-4
    col-4
    col-4
    col-4
    排版

    布局基础。

    子元素根据不同的值 start、center、end、space-between、space-around 和 space-evenly,分别定义其在父节点里面的排版方式。

    expand codeexpand code
    Align Top

    col-4

    col-4

    col-4

    col-4

    Align Middle

    col-4

    col-4

    col-4

    col-4

    Align Bottom

    col-4

    col-4

    col-4

    col-4

    对齐

    子元素垂直对齐。

    expand codeexpand code
    Normal
    1 col-order-4
    2 col-order-3
    3 col-order-2
    4 col-order-1
    Responsive
    1 col-order-responsive
    2 col-order-responsive
    3 col-order-responsive
    4 col-order-responsive
    排序

    通过 order 来改变元素的排序。

    expand codeexpand code
    Percentage columns
    2 / 5
    3 / 5
    Fill rest
    100px
    Fill Rest
    Raw flex style
    1 1 200px
    0 1 300px
    none
    auto with no-wrap
    Flex 填充

    Col 提供 flex 属性以支持填充。

    expand codeexpand code
    Col
    Col
    Col
    响应式布局

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

    expand codeexpand code
    Col
    Col
    Col
    其他属性的响应式

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

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

    expand codeexpand code
    Horizontal Gutter (px):
    81624324048
    Vertical Gutter (px):
    81624324048
    Column Count:
    2346812
    Column
    Column
    Column
    Column
    Column
    Column
    Column
    Column
    Another Row:
    Column
    Column
    Column
    Column
    <Row gutter={[16, 16]}>
      <Col span={6} />
      <Col span={6} />
      <Col span={6} />
      <Col span={6} />
    
      <Col span={6} />
      <Col span={6} />
      <Col span={6} />
      <Col span={6} />
    </Row>
    <Row gutter={[16, 16]}>
      <Col span={6} />
      <Col span={6} />
      <Col span={6} />
      <Col span={6} />
    </Row>
    栅格配置器

    可以简单配置几种等分栅格和间距。

    expand codeexpand code
    Current break point:
    useBreakpoint Hook

    使用 useBreakpoint Hook 个性化布局。

    expand codeexpand code

    API

    通用属性参考:通用属性

    Namu Design 的布局组件若不能满足你的需求,你也可以直接使用社区的优秀布局组件:

    • react-flexbox-grid
    • react-blocks

    Row

    参数说明类型默认值版本
    align垂直对齐方式top | middle | bottom | stretch | {[key in 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'xxl']: 'top' | 'middle' | 'bottom' | 'stretch'}topobject: 4.24.0
    gutter栅格间隔,可以写成像素值或支持响应式的对象写法来设置水平间隔 { xs: 8, sm: 16, md: 24}。或者使用数组形式同时设置 [水平间距, 垂直间距]number | object | array0
    justify水平排列方式start | end | center | space-around | space-between | space-evenly | {[key in 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'xxl']: 'start' | 'end' | 'center' | 'space-around' | 'space-between' | 'space-evenly'}startobject: 4.24.0
    wrap是否自动换行booleantrue4.8.0

    Col

    参数说明类型默认值版本
    flexflex 布局属性string | number-
    offset栅格左侧的间隔格数,间隔内不可以有栅格number0
    order栅格顺序number0
    pull栅格向左移动格数number0
    push栅格向右移动格数number0
    span栅格占位格数,为 0 时相当于 display: nonenumber-
    xs屏幕 < 576px 响应式栅格,可为栅格数或一个包含其他属性的对象number | object-
    sm屏幕 ≥ 576px 响应式栅格,可为栅格数或一个包含其他属性的对象number | object-
    md屏幕 ≥ 768px 响应式栅格,可为栅格数或一个包含其他属性的对象number | object-
    lg屏幕 ≥ 992px 响应式栅格,可为栅格数或一个包含其他属性的对象number | object-
    xl屏幕 ≥ 1200px 响应式栅格,可为栅格数或一个包含其他属性的对象number | object-
    xxl屏幕 ≥ 1600px 响应式栅格,可为栅格数或一个包含其他属性的对象number | object-

    您可以使用 主题定制 修改 screen[XS|SM|MD|LG|XL|XXL] 来修改断点值(自 5.1.0 起,codesandbox demo)。

    响应式栅格的断点扩展自 BootStrap 4 的规则(不包含链接里 occasionally 的部分)。

    Design Token