一、项目中遇到的问题
前端使用Element框架,出现了使用级联选择器只能点击前端小圆框选中的情况,客户不满意,要求能够点击一整行选中。
二、解决方法
利用Cascader的属性:popper-class(自定义浮层类名),增加CSS解决问题。
<el-form-item label="所属频道" prop="channel"> <div class="elInputM"> <el-cascader v-model="editForm.channel" :options="channelList" :props="{ multiple: true, checkStrictly: true, emitPath: false, value: 'id', label: 'channel_name' }" clearable style="width: 100%;" popper-class="popper" // 这个是重点 > </el-cascader> </div> </el-form-item>
增加对应的CSS
.popper .el-cascader-panel .el-checkbox { width: 100%; height: 100%; z-index: 10; position: absolute; top: 0px; right: 0px; } .popper .el-cascader-panel .el-checkbox__input { margin-top: 2px; margin-left: 8px; } .popper .el-cascader-panel .el-cascader-node__postfix { top: 10px; }
测试发现没问题了,但是这种格式的CSS遇到multiple:false的单选是不生效的,增加单选的格式CSS,最后变成:
.popper .el-cascader-panel .el-radio { width: 100%; height: 100%; z-index: 10; position: absolute; top: 0px; right: 0px; } .popper .el-cascader-panel .el-checkbox { width: 100%; height: 100%; z-index: 10; position: absolute; top: 0px; right: 0px; } .popper .el-cascader-panel .el-radio__input { margin-top: 10px; margin-left: 8px; } .popper .el-cascader-panel .el-checkbox__input { margin-top: 2px; margin-left: 8px; } .popper .el-cascader-panel .el-cascader-node__postfix { top: 10px; }
搞定