| --- |
| title: Grid |
| sidebar_label: Grid |
| --- |
| |
| <!-- |
| Licensed to the Apache Software Foundation (ASF) under one |
| or more contributor license agreements. See the NOTICE file |
| distributed with this work for additional information |
| regarding copyright ownership. The ASF licenses this file |
| to you under the Apache License, Version 2.0 (the |
| "License"); you may not use this file except in compliance |
| with the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, |
| software distributed under the License is distributed on an |
| "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| KIND, either express or implied. See the License for the |
| specific language governing permissions and limitations |
| under the License. |
| --> |
| |
| import { StoryWithControls } from '../../../src/components/StorybookWrapper'; |
| |
| # Grid |
| |
| The Grid system of Ant Design is based on a 24-grid layout. The `Row` and `Col` components are used to create flexible and responsive grid layouts. |
| |
| ## Live Example |
| |
| <StoryWithControls |
| component="Grid" |
| renderComponent="Row" |
| props={{ |
| align: "top", |
| justify: "start", |
| wrap: true, |
| gutter: 16 |
| }} |
| controls={[ |
| { |
| name: "align", |
| label: "Align", |
| type: "select", |
| options: [ |
| "top", |
| "middle", |
| "bottom", |
| "stretch" |
| ], |
| description: "Vertical alignment of columns within the row." |
| }, |
| { |
| name: "justify", |
| label: "Justify", |
| type: "select", |
| options: [ |
| "start", |
| "end", |
| "center", |
| "space-around", |
| "space-between", |
| "space-evenly" |
| ], |
| description: "Horizontal distribution of columns within the row." |
| }, |
| { |
| name: "wrap", |
| label: "Wrap", |
| type: "boolean", |
| description: "Whether columns are allowed to wrap to the next line." |
| }, |
| { |
| name: "gutter", |
| label: "Gutter", |
| type: "number", |
| description: "Spacing between columns in pixels." |
| } |
| ]} |
| sampleChildren={[{"component":"Col","props":{"span":4,"children":"col-4","style":{"background":"#e6f4ff","padding":"8px","border":"1px solid #91caff","textAlign":"center"}}},{"component":"Col","props":{"span":4,"children":"col-4 (tall)","style":{"background":"#e6f4ff","padding":"24px 8px","border":"1px solid #91caff","textAlign":"center"}}},{"component":"Col","props":{"span":4,"children":"col-4","style":{"background":"#e6f4ff","padding":"8px","border":"1px solid #91caff","textAlign":"center"}}}]} |
| /> |
| |
| ## Try It |
| |
| Edit the code below to experiment with the component: |
| |
| ```tsx live |
| function Demo() { |
| return ( |
| <Row gutter={[16, 16]}> |
| <Col span={12}> |
| <div style={{ background: '#e6f4ff', padding: '8px', border: '1px solid #91caff' }}>col-12</div> |
| </Col> |
| <Col span={12}> |
| <div style={{ background: '#e6f4ff', padding: '8px', border: '1px solid #91caff' }}>col-12</div> |
| </Col> |
| <Col span={8}> |
| <div style={{ background: '#e6f4ff', padding: '8px', border: '1px solid #91caff' }}>col-8</div> |
| </Col> |
| <Col span={8}> |
| <div style={{ background: '#e6f4ff', padding: '8px', border: '1px solid #91caff' }}>col-8</div> |
| </Col> |
| <Col span={8}> |
| <div style={{ background: '#e6f4ff', padding: '8px', border: '1px solid #91caff' }}>col-8</div> |
| </Col> |
| </Row> |
| ); |
| } |
| ``` |
| |
| ## Responsive Grid |
| |
| ```tsx live |
| function ResponsiveGrid() { |
| return ( |
| <Row gutter={[16, 16]}> |
| <Col xs={24} sm={12} md={8} lg={6}> |
| <div style={{ background: '#e6f4ff', padding: '16px', border: '1px solid #91caff', textAlign: 'center' }}> |
| Responsive |
| </div> |
| </Col> |
| <Col xs={24} sm={12} md={8} lg={6}> |
| <div style={{ background: '#e6f4ff', padding: '16px', border: '1px solid #91caff', textAlign: 'center' }}> |
| Responsive |
| </div> |
| </Col> |
| <Col xs={24} sm={12} md={8} lg={6}> |
| <div style={{ background: '#e6f4ff', padding: '16px', border: '1px solid #91caff', textAlign: 'center' }}> |
| Responsive |
| </div> |
| </Col> |
| <Col xs={24} sm={12} md={8} lg={6}> |
| <div style={{ background: '#e6f4ff', padding: '16px', border: '1px solid #91caff', textAlign: 'center' }}> |
| Responsive |
| </div> |
| </Col> |
| </Row> |
| ); |
| } |
| ``` |
| |
| ## Alignment |
| |
| ```tsx live |
| function AlignmentDemo() { |
| const boxStyle = { background: '#e6f4ff', padding: '16px 0', border: '1px solid #91caff', textAlign: 'center' }; |
| return ( |
| <div style={{ display: 'flex', flexDirection: 'column', gap: 16 }}> |
| <Row justify="start" gutter={8}> |
| <Col span={4}><div style={boxStyle}>start</div></Col> |
| <Col span={4}><div style={boxStyle}>start</div></Col> |
| </Row> |
| <Row justify="center" gutter={8}> |
| <Col span={4}><div style={boxStyle}>center</div></Col> |
| <Col span={4}><div style={boxStyle}>center</div></Col> |
| </Row> |
| <Row justify="end" gutter={8}> |
| <Col span={4}><div style={boxStyle}>end</div></Col> |
| <Col span={4}><div style={boxStyle}>end</div></Col> |
| </Row> |
| <Row justify="space-between" gutter={8}> |
| <Col span={4}><div style={boxStyle}>between</div></Col> |
| <Col span={4}><div style={boxStyle}>between</div></Col> |
| </Row> |
| </div> |
| ); |
| } |
| ``` |
| |
| ## Props |
| |
| | Prop | Type | Default | Description | |
| |------|------|---------|-------------| |
| | `align` | `string` | `"top"` | Vertical alignment of columns within the row. | |
| | `justify` | `string` | `"start"` | Horizontal distribution of columns within the row. | |
| | `wrap` | `boolean` | `true` | Whether columns are allowed to wrap to the next line. | |
| | `gutter` | `number` | `16` | Spacing between columns in pixels. | |
| |
| ## Import |
| |
| ```tsx |
| import { Grid } from '@superset-ui/core/components'; |
| ``` |
| |
| --- |
| |
| :::tip[Improve this page] |
| This documentation is auto-generated from the component's Storybook story. |
| Help improve it by [editing the story file](https://github.com/apache/superset/edit/master/superset-frontend/packages/superset-ui-core/src/components/Grid/Grid.stories.tsx). |
| ::: |