vue2:如何动态控制el-form-item之间的行间距或label的位置

59 篇文章 ¥19.90 ¥99.00

需求

某页面有查看和编辑两种状态:

编辑:

查看:

可以看到,查看时,行间距太大导致页面不紧凑,所以希望缩小查看是的行间距。

行间距设置

行间距通常是通过 CSS 的 margin 或 padding 属性来控制的。

例如,在 Element UI 的样式表中,.el-form-item 的下边距(margin-bottom)通常被设置为 20px,这可以视为一种“行间距”。

所以要缩小行间距,就要改变这个值。

.el-form-item {
  margin-bottom: 20px;
}

但是同时又不希望改变编辑状态的默认值,所以,使用动态class,如下:

1、定义custom style

.el-for
<el-form :model="projectInfo" label-width="120px" class="project-form"> <el-row :gutter="20"> <el-col :span="8"> <el-form-item label="项目名称:"> <el-input v-model="projectInfo.name" /> </el-form-item> </el-col> <el-col :span="8"> <el-form-item label="项目编码:"> <el-input v-model="projectInfo.code" /> </el-form-item> </el-col> <el-col :span="8"> <el-form-item label="采集目的:"> <el-input v-model="projectInfo.purpose" /> </el-form-item> </el-col> </el-row> <el-row :gutter="20"> <el-col :span="8"> <el-form-item label="参与者姓名:"> <el-input v-model="projectInfo.participantName" /> </el-form-item> </el-col> <el-col :span="8"> <el-form-item label="参与者手机:"> <el-input v-model="projectInfo.participantPhone" /> </el-form-item> </el-col> <el-col :span="8"> <el-form-item label="设备名称:"> <el-input v-model="projectInfo.deviceName" /> </el-form-item> </el-col> </el-row> <el-row :gutter="20"> <el-col :span="8"> <el-form-item label="设备类型:"> <el-input v-model="projectInfo.deviceType" /> </el-form-item> </el-col> <el-col :span="8"> <el-form-item label="采集文件号:"> <el-input v-model="projectInfo.collectionFileNumber" /> </el-form-item> </el-col> <el-col :span="8"> <el-form-item label="设备类别:"> <el-input v-model="projectInfo.deviceCategory" /> </el-form-item> </el-col> </el-row> <el-row :gutter="20"> <el-col :span="8"> <el-form-item label="开始时间:"> <el-input v-model="projectInfo.startTime" /> </el-form-item> </el-col> <el-col :span="8"> <el-form-item label="业务与场景:"> <el-input v-model="projectInfo.businessScene" /> </el-form-item> </el-col> <el-col :span="8"> <el-form-item label="采集地域:"> <el-input v-model="projectInfo.collectionRegion" /> </el-form-item> </el-col> </el-row> <el-row :gutter="20"> <el-col :span="8"> <el-form-item label="数据文件名:"> <el-input v-model="projectInfo.dataFileName" /> </el-form-item> </el-col> <el-col :span="8"> <el-form-item label="上传来源:"> <el-input v-model="projectInfo.uploadSource" /> </el-form-item> </el-col> <el-col :span="8"> <el-form-item label="QT报告:"> <el-input v-model="projectInfo.qtReport" /> </el-form-item> </el-col> </el-row> </el-form> 不用这种col row的写法
最新发布
09-18
### 如何在 Element UI 中设置 `el-form-item` 的行间距Vue 2Element UI 中,可以通过自定义样式来调整 `el-form-item` 组件的行间距。以下是实现方法: #### 自定义 CSS 类 通过创建一个自定义类 `.el-form-item-view` 并将其应用于特定场景下的 `el-form-item` 来动态控制其行为[^1]。 ```css /* 定义 custom style */ .el-form-item-view { margin-bottom: 0px; /* 调整行间距为 0 */ } ``` #### 动态绑定 class 属性 利用 Vue 的动态绑定功能,在模板中根据条件切换应用不同的样式。 ```html <el-form-item :class="formEditable ? '' : 'el-form-item-view'" label="所属项目" prop="projectUnid"> </el-form-item> ``` 在此示例中,当变量 `formEditable` 值为 `true` 时,默认样式的行间距生效;而当该值为 `false` 时,则会应用 `.el-form-item-view` 样式,从而覆盖默认的行间距。 #### 默认配置中的行间距管理 如果需要全局修改所有表单项的行间距,可以直接调整父级容器 `<el-form>` 者单独针对某个字段进行局部定制[^2]。 ```html <!-- 使用 inline-style 修改单个 form item --> <el-form-item style="margin-bottom: 10px;"> <!-- 表单项内容 --> </el-form-item> <!-- 整体形式化处理 --> <style scoped> .custom-margin .el-form-item { margin-bottom: 20px !important; } </style> <div class="custom-margin"> <el-form :model="form" label-width="80px" :rules="rules"> <el-form-item label="经度" prop="longitude"> <el-input type="number" v-model="form.longitude"></el-input> </el-form-item> <el-form-item label="纬度" prop="latitude"> <el-input type="number" v-model="form.latitude"></el-input> </el-form-item> </el-form> </div> ``` 上述代码片段展示了两种方式:一种是直接嵌入内联样式,另一种则是借助作用域外层包裹器统一设定子组件的行为模式。 --- #### 注意事项 - 如果发现某些情况下未按预期渲染效果,请确认是否存在更高优先级的选择器干扰目标元素的表现。 - 对于复杂交互逻辑建议封装成独立组件以便维护与扩展。 --- 相关问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值