解决antd表单layout=“horizontal“的布局问题

ps:本人菜鸟一枚,仅记录工作中遇到的问题,还请广大网友多多包涵,不喜勿喷,谢谢~

正文:今天用Antd Design的表单的时候,UI让我做个简单的表单,里面label和内容在一行显示,下面是UI要求做成的样子

 这是我做的样子

我发现我无论怎么捯饬,标题很内容都在两行上去显示,后来看了官网的介绍,才发现通过设置这两个属性就可以解决这个问题

下面是关键代码, 再此记录一下,看看我下次还会不会犯这么低级的错误

        <a-form
          id="formAuditRecord"
          ref="formAuditRecord"
          layout="horizontal"
          :label-col="{ span: 4 }"
          :wrapper-col="{ span: 18 }"
          :form="form"
        >
          <a-form-item label="附件">
            <a-button type="primary" ghost> 上传附件 </a-button>
          </a-form-item>
          <a-form-item label="原因描述">
            <a-textarea
              placeholder="请输入差异原因"
              v-decorator="['opinion', { rules: [{ required: false, message: '请输入原因描                        述' }] }]"
              :rows="4"
            />
          </a-form-item>
        </a-form>

 

首先,我们需要确定所使用的前端框架,可以选择React、Vue、Angular等。以React为例,可以使用Ant Design作为UI库。 接下来,我们可以将该页面分为三个部分:左侧、中间、右侧。使用Flex布局可以使得每个部分占据相应的宽度,同时每个部分内部采用表格布局。 对于左侧部分,可以使用Ant Design的表格组件,并将每列的标题和输入框都作为一个单独的表格单元格,以实现每列的行一一对其。同时,可以设置表格的固定宽度和滚动条,以保证表格宽度不随内容长度变化而改变。 对于中间部分,可以使用Ant Design的卡片组件,并在卡片内使用表格布局。同样的,每列的标题和输入框都作为一个单独的表格单元格,以实现每列的行一一对其。 对于右侧部分,可以使用Ant Design的表单组件,并将每个表单项作为一个单独的表格单元格。同时,可以设置表单项的宽度和排列方式,以保证和左侧和中间部分的对其方式一致。 最后,在CSS样式上,可以使用统一的颜色和字体,并使用合适的margin和padding,以实现页面美观和类似机床加工页面的效果。 以下是示例代码: ```jsx import { Table, Card, Form, Input } from 'antd'; const leftColumns = [ { title: '全齿高', dataIndex: '全齿高', render: (text, record) => ( <Input defaultValue={text} /> ) }, // 其他列 ]; const leftData = [ { key: '1', 全齿高: '10', // 其他数据 }, // 其他行 ]; const middleColumns = [ { title: '床鞍进给时间', dataIndex: '床鞍进给时间', render: (text, record) => ( <Input defaultValue={text} /> ) }, // 其他列 ]; const middleData = [ { key: '1', 床鞍进给时间: '0.5', // 其他数据 }, // 其他行 ]; const rightItems = [ { label: '工件号', name: '工件号', initialValue: '001' }, // 其他表单项 ]; const layout = { labelCol: { span: 6, }, wrapperCol: { span: 18, }, }; const MachinePage = () => { return ( <div style={{ padding: '24px' }}> <div style={{ display: 'flex' }}> <Table columns={leftColumns} dataSource={leftData} scroll={{ x: 1200 }} style={{ width: '50%' }} /> <Card title="加工参数" style={{ width: '50%', marginLeft: '24px' }}> <Table columns={middleColumns} dataSource={middleData} pagination={false} /> </Card> </div> <div style={{ display: 'flex', marginTop: '24px' }}> <Form layout="horizontal" initialValues={{ 工件号: '001', // 其他表单项的默认值 }} style={{ width: '50%' }} > {rightItems.map(item => ( <Form.Item key={item.name} label={item.label} name={item.name} initialValue={item.initialValue} > <Input /> </Form.Item> ))} </Form> <div style={{ width: '50%', marginLeft: '24px' }}> <div>绝对坐标</div> <div style={{ display: 'flex', justifyContent: 'space-between' }}> <div>X:</div> <Input style={{ width: '80%' }} /> </div> <div style={{ display: 'flex', justifyContent: 'space-between' }}> <div>Y:</div> <Input style={{ width: '80%' }} /> </div> <div style={{ display: 'flex', justifyContent: 'space-between' }}> <div>Z:</div> <Input style={{ width: '80%' }} /> </div> </div> </div> </div> ); }; export default MachinePage; ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值