使用element插件中Descriptions遇到的坑

本文介绍了一种在使用Element UI的Descriptions组件时遇到的问题及解决方案。主要问题是当动态添加描述项时,最后一项的标题会发生变化。通过直接设置label属性并自定义样式来解决这一问题。

使用Descriptions 描述列表中的自定义label,打包后点击按钮新增一个el-descriptions-item时,最后一个item的标题发生改变
在这里插入图片描述
解决办法:
将以下代码替换

<el-descriptions-item label-align="center">
            <template #label>
                <div class="cell-item">
                    <span class="f_validate">*</span> 工作单位职务
                </div>
            </template>
            <el-form-item prop="dw">
                <el-input v-model="dw" placeholder="" />
            </el-form-item>
        </el-descriptions-item>

改成:

<el-descriptions-item label-align="center" label="工作单位职务" label-class-name="setred">
            <el-form-item prop="dw">
                <el-input v-model="dw" placeholder="" />
            </el-form-item>
        </el-descriptions-item>

给label栏添加红色字体的*
在<el-descriptions-item>标签上添加label-class-name=“setred”,给当前表添加class

<style>
.setred::before{
    content: "*";
    color: red;
    font-weight: bold;
    font-size: 16px;
}
</style>
在 Vue3使用 Element Plus 的 `Descriptions` 组件时,如果内容过长,会导致 `label` 被挤压,影响布局美观。以下是几种解决方案: ### 通过调整 CSS 样式控制换行和布局 可以为 `Descriptions` 组件添加自定义的 CSS 样式,以控制 `label` 和 `value` 的宽度和换行行为。例如: ```css .el-descriptions__label { width: 120px; /* 设置 label 的固定宽度 */ white-space: normal; /* 允许 label 内容换行 */ } .el-descriptions__cell { white-space: normal; /* 允许 value 内容换行 */ } ``` 通过这种方式,可以避免 `label` 被挤压,并且内容过长时会自动换行。 ### 使用 `span` 属性调整列数 Element Plus 的 `Descriptions` 组件支持 `span` 属性,该属性用于控制每个 `DescriptionsItem` 占据的列数(总共 24 列)。可以通过增大 `span` 值来为内容提供更多空间,从而避免换行问题。例如: ```html <el-descriptions :column="24"> <el-descriptions-item label="详细描述" span="12"> 这是一段非常长的内容,可能会导致自动换行并挤压 label。 </el-descriptions-item> </el-descriptions> ``` 通过调整 `span` 值,可以动态分配内容区域的宽度,优化布局效果[^1]。 ### 二次封装 `Descriptions` 组件 如果需要更灵活的控制,可以对 `Descriptions` 组件进行二次封装。例如,可以在封装组件中动态计算 `label` 和 `value` 的样式,根据内容长度自动调整宽度或换行行为。例如: ```vue <template> <el-descriptions :column="column"> <el-descriptions-item v-for="(item, index) in items" :key="index" :label="item.label" :span="item.span || defaultSpan" > {{ item.value }} </el-descriptions-item> </el-descriptions> </template> <script> import { ref } from &#39;vue&#39;; export default { props: { items: { type: Array, required: true }, column: { type: Number, default: 24 }, defaultSpan: { type: Number, default: 6 } } }; </script> ``` 通过这种方式,可以更灵活地控制 `Descriptions` 组件的布局行为,适应不同场景下的内容需求[^4]。 ### 使用 `formatter` 函数处理长内容 如果内容过长,可以使用 `formatter` 函数对内容进行截断或格式化,避免影响布局。例如: ```html <el-descriptions> <el-descriptions-item label="长内容" :formatter="formatLongText"> 这是一段非常长的内容,可能会导致自动换行并挤压 label。 </el-descriptions-item> </el-descriptions> ``` 对应的 `formatter` 函数: ```javascript methods: { formatLongText(value) { return value.length > 50 ? value.substring(0, 50) + &#39;...&#39; : value; } } ``` 通过 `formatter` 函数,可以对内容进行预处理,确保布局的美观性[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值