惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

J
Java Code Geeks
Google DeepMind News
Google DeepMind News
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
小众软件
小众软件
Blog — PlanetScale
Blog — PlanetScale
腾讯CDC
A
About on SuperTechFans
Vercel News
Vercel News
I
InfoQ
阮一峰的网络日志
阮一峰的网络日志
月光博客
月光博客
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
人人都是产品经理
人人都是产品经理
S
SegmentFault 最新的问题
V
Visual Studio Blog
T
Tailwind CSS Blog
大猫的无限游戏
大猫的无限游戏
M
MIT News - Artificial intelligence
博客园 - 【当耐特】
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Microsoft Azure Blog
Microsoft Azure Blog
Apple Machine Learning Research
Apple Machine Learning Research
GbyAI
GbyAI
美团技术团队

博客园 - JavAndroidJSql

ai编程----Ai codex编程 龙虾---openClaw 配置企业微信 龙虾---openClaw龙虾安装和理解(类似Hermes 编程开源智能体) 前端---自定义hook函数 前端--react使用 Reducer 和 Context 拓展应用和组件 前端----服务端渲染组件SSR 前端---ts语法 前端--uniapp ai---sd 模型头像生成 ai------代码辅助ai工具对比 ai ----语音克隆 数字人 项目相关方案 @前端----节流防抖 @前端--webpack实现原理及核心过程 @面试项目管理----总结整理 js开发过程遇到的基础问题 ai数字人相关研究 前端 -----浏览器等前端运行容器的工作原理 ios ---时间 格式 判断兼容问题 人工智能chatGPT----链接大全 ffmpeg----用法及命令使用总结
前端 ----form表单对齐处理
JavAndroidJSql · 2025-06-20 · via 博客园 - JavAndroidJSql

<FormRowDiv>

<div style={{ display: 'flex', gap: 24 }}>

<Form.Item

label={<span>项目名称<span style={{ marginRight: 93 }}></span></span>}

name="projectName"

layout="horizontal"

rules={[{ required: true, message: '请输入项目名称' }]}

labelCol={{ span: 11 }}

wrapperCol={{ span: 13 }}

style={{ marginBottom: 19, width: 365 }}

>

<Input placeholder="请输入项目名称" maxLength={18} />

</Form.Item>

<Form.Item

label={<span>建设单位<span style={{ marginRight: 103 }}></span></span>}

name="buildClient"

layout="horizontal"

labelCol={{ span: 11 }}

wrapperCol={{ span: 13 }}

style={{ marginBottom: 19, width: 380 }}

>

<Input placeholder="请输入建设单位" maxLength={18} />

</Form.Item>

</div>

<div style={{ display: 'flex', gap: 24 }}>

<Form.Item

label={<span>&nbsp;&nbsp;&nbsp;项目编号<span style={{ marginRight: 93 }}></span></span>}

name="projectNum"

rules={[{ required: false, message: '请输入项目编号' }]}

layout="horizontal"

labelCol={{ span: 11 }}

wrapperCol={{ span: 13 }}

style={{ marginBottom: 19, width: 365 }}

>

<Input placeholder="请输入项目编号" maxLength={18} />

</Form.Item>

<Form.Item

label={<span>变压器设计序号<span style={{ marginRight: 93 }}></span></span>}

name="transformerModel"

initialValue={'SCB14'}

rules={[{ required: false, message: '请选择变压器设计序号' }]}

layout="horizontal"

labelCol={{ span: 11 }}

wrapperCol={{ span: 13 }}

style={{ marginBottom: 19, width: 380 }}

>

<Select>

<Option value="SCB13">SCB13</Option>

<Option value="SCB14">SCB14</Option>

</Select>

</Form.Item>

</div>

<div style={{ display: 'flex', gap: 24 }}>

<Form.Item

label={<span>&nbsp;&nbsp;&nbsp;消防负荷开关保护模式</span>}

name="fireProtectionMode"

initialValue={"1"}

layout="horizontal"

rules={[{ required: false, message: '请选择消防负荷开关保护模式' }]}

labelCol={{ span: 11 }}

wrapperCol={{ span: 13 }}

style={{ marginBottom: 19, width: 365 }}

>

<Select>

<Option value="1">电磁</Option>

<Option value="2">电子式</Option>

</Select>

</Form.Item>

<Form.Item

label={<span>非消防负荷开关保护模式<span style={{ marginRight: 93 }}></span></span>}

name="nonFireProtectionMode"

initialValue={"1"}

layout="horizontal"

labelCol={{ span: 11 }}

wrapperCol={{ span: 13 }}

rules={[{ required: false, message: '请选择非消防负荷开关保护模式' }]}

style={{ marginBottom: 19, width: 380 }}

>

<Select>

<Option value="1">热磁</Option>

<Option value="2">电子式</Option>

</Select>

</Form.Item >

</div>

<div style={{ display: showNotes ? 'block' : 'none', marginTop: 20 }}>

<div style={{ textAlign: 'left', fontWeight: 400, marginBottom: 10, fontSize: 12, color: ' rgba(51, 51, 51, 1)' }}>图纸说明:</div>

<div style={{ marginTop: 10, display: 'flex', justifyContent: 'center', flexDirection: 'column' }}>

{itemDatas?.map((data, index) => (

<div key={index} style={{ display: 'flex' }}>

<Form.Item>

<span style={{

marginRight: 10,

textAlign: 'center',

fontSize: 14,

color: 'rgba(0, 0, 0, 1)',

fontWeight: 400

}}>

{index + 1}

</span>

</Form.Item>

<Form.Item

name={['drawDescribes', index, 'txt']}

initialValue={data.txt}

rules={[{ required: true, message: '请输入内容' }]}

style={{ flex: 1, marginBottom: 0, marginRight: 10 }}

>

<Input maxLength={200} placeholder='请输入内容' />

</Form.Item>

{

itemDatas?.length > 1 &&

<Form.Item>

<FormStepDeleteIcon

onClick={() => removeRow(index)}

/>

</Form.Item>

}

</div>

))}

<FormStepButton

className='text4'

onClick={addRow}

icon={<FormStepAddIcon />}

>

增加一行

</FormStepButton>

</div>

</div>

<div className="fl fl_ai_c fl_jc_fe" style={{ textAlign: 'right', marginTop: 20, cursor: 'pointer' }} onClick={() => setShowNotes(!showNotes)}>

<span style={{ color: 'red', fontSize: 14 }}>*</span><span style={{ marginRight: 8 }}>更多参数</span>{showNotes ? <FormStepUp /> : <FormStepDown />}

</div>

</FormRowDiv>

或者

你可以不用 `<Row>` `<Col>`,直接用**两个并排的表单项**,通过 `style` 设置 `display: inline-block` 或 `flex` 实现一行两个表单。

### 推荐写法:flex布局

````jsx
<div style={{ display: 'flex', gap: 24 }}>
<Form.Item
label="项目名称"
name="projectName"
rules={[{ required: true, message: '请输入项目名称' }]}
labelCol={{ flex: '0 0 110px' }}
wrapperCol={{ flex: 1 }}
style={{ marginBottom: 19, width: 365 }}
>
<Input placeholder="请输入项目名称" maxLength={18} />
</Form.Item>
<Form.Item
label="建设单位"
name="buildClient"
labelCol={{ flex: '0 0 110px' }}
wrapperCol={{ flex: 1 }}
style={{ marginBottom: 19, width: 380 }}
>
<Input placeholder="请输入建设单位" maxLength={18} />
</Form.Item>
</div>
````

- `display: 'flex'` 让两个表单项一行显示
- `gap: 24` 控制间距
- 每个 `Form.Item` 设置固定宽度

这样就能不用 Row/Col 实现一行两个表单项。

产品思维的PM程序员~
工作1-3年,基础知识,多看书。多跟着别人做项目,学习经验。 工作3-5年,新知识,高级知识,自己独立做项目,总结经验。尝试不同的语言。 工作5-8年,工作职位,要从设计,管理方面要求自己,可以尝试走管理路线(项目经理或cto)。 工作10年及以上, 自己做些项目,产品,尝试为创业做准备。 上大学和不上大学区别很大,上品牌大学和普通大学区别也很大,后天的努力最大。 ---无论它是在遥远的远方,还是在出发的地方、哪里有希望哪里就是我们的方向;终点、只不过是梦想起飞的地方。