开发避坑短篇(6):Vue+Element UI 深度选择器实现表单元素精准对齐的技术实践

需求

el-form 表单的el-input和el-select默认宽度度不一致,导致不对齐,如下图。那么如何设置让el-input和el-select的宽度度一致并对齐?

vue 复制代码
<el-form class="page-form" :model="addForm" :rules="rules" :disabled="flag" ref="addForm" >
    <el-row>
        <el-col :span="8">
            <el-form-item label="订单编号" prop="orderNo">
            <el-input v-model="form.orderNo" :placeholder="showInfo ? '' : '请输入订单编号'" />
            </el-form-item>
        </el-col>
        <el-col :span="8">
            <el-form-item label="订单状态" prop="status">
                <el-select v-model="form.status" clearable>
                    <el-option
                    v-for="dict in order_status"
                    :key="dict.value"
                    :label="dict.label"
                    :value="dict.value"
                    />
                </el-select>   
            </el-form-item>          
        </el-col> 
    </el-row>
</el-form>    

解决办法

(1)单行设置3列,

(2)在标签上设置属性label-position="left" label-width="100px",固定文本的对齐方式和宽度

(3)使用css深度选择器:deep(),统一设置表单元素的宽度

css 复制代码
/***修改input,select宽度 */
:deep(.el-collapse .el-input),
:deep(.el-collapse .el-select),
:deep(.el-collapse .el-date-editor){
  width: 450px;
}

注意,如果是el-dialog弹框页面上的表单,则需要用下面的方式修改

css 复制代码
/***修改弹框页面input,select宽度 */
:deep(.el-dialog__body .el-select),
:deep(.el-dialog__body .el-input){
  width: 400px;
}

当style标签有 scoped 属性时,它的 CSS 只作用于当前组件中的元素,父组件的样式将不会渗透到子组件。Vue中的:deep()深度选择器是用于穿透scoped样式限制的特殊语法,主要解决父组件修改子组件/第三方组件内部样式的需求‌。

相关推荐
Jerry说前后端30 分钟前
Android 移动端 UI 设计:前端常用设计原则总结
android·前端·ui
LIUENG43 分钟前
Vue3 响应式原理
前端·vue.js
wycode2 小时前
Vue2实践(3)之用component做一个动态表单(二)
前端·javascript·vue.js
wycode3 小时前
Vue2实践(2)之用component做一个动态表单(一)
前端·javascript·vue.js
第七种黄昏3 小时前
Vue3 中的 ref、模板引用和 defineExpose 详解
前端·javascript·vue.js
pepedd8644 小时前
还在开发vue2老项目吗?本文带你梳理vue版本区别
前端·vue.js·trae
前端缘梦4 小时前
深入理解 Vue 中的虚拟 DOM:原理与实战价值
前端·vue.js·面试
HWL56794 小时前
pnpm(Performant npm)的安装
前端·vue.js·npm·node.js
柯南95275 小时前
Vue 3 reactive.ts 源码理解
vue.js
柯南95275 小时前
Vue 3 Ref 源码解析
vue.js