el-checkbox实现文本超出设定宽度则超出部分显示为【...】,鼠标移入显示全称提示框
效果图
依赖说明
使用element-ui的el-checkbox
和el-tooltip
进行二次封装,故依赖element-ui
该组件可配合el-checkbox-group使用
功能介绍
- 文本超出设定的宽度后,超出部分显示...
- 如果文本超出,鼠标移入到checkbox时,会显示包含全文内容的提示框
- 如果文本未超出,鼠标移入不会展示提示框
组件代码
<!-- 当label内的文字超出设定的宽度,超出部分显示[...], 鼠标移入时显示tooltip提示框 基于el-checkbox、el-tooltip封装,可用在el-checkbox-group中 --> <template> <div :style="{width}" @mouseout="mouseover" @mouseover="mouseover"> <el-tooltip :content="label" :placement="tooltipOption.position" :value="showTooltip" manual> <el-checkbox ref="checkbox" v-model="myChecked" :label="value" class="checkbox" @change="$emit('change', $event)"> {{ label }} </el-checkbox> </el-tooltip> <!-- 用于确定字符长度的隐藏域 --> <span ref="hidden" style="position:absolute;left: -100000px;"> <span class="el-checkbox__inner"></span> <span class="el-checkbox__label"> {{ label }} </span> </span> </div> </template> <script> export default { name: 'OutTooltipCheckbox', model: { prop: 'checked', event: 'v-model' }, props: { // 整个checkbox的宽度,可设置px/%,默认200px width: { type: String, default: '200px' }, // tooltip配置 tooltipOption: { type: Object, default: () => ({ position: 'top-start' }) }, // checkbox的文本 label: { default: '' }, // checkbox选中的值 value: { default: '' }, // 是否选中 checked: { type: Boolean, default: false } }, data() { return { showTooltip: false } }, computed: { myChecked: { get() { return this.checked }, set(v) { this.$emit('v-model', v) } } }, methods: { mouseover(e) { if (e.type === 'mouseout') return this.showTooltip = false let hiddenLength = this.$refs.hidden.offsetWidth let checkboxLength = this.$refs.checkbox.$el.offsetWidth this.showTooltip = hiddenLength > checkboxLength } } } </script> <style scoped> .checkbox { display: flex; align-items: center; justify-content: flex-start; } /deep/ .el-checkbox__label { line-height: 14px; padding-bottom: 2px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; } </style>
样例
<!-- 在多选框组中使用 --> <out-tooltip-checkbox label="我是一段很长很长的文本" value="我是选中时的值" width="100px"> </out-tooltip-checkbox> <!-- 单独使用 checked是绑定的变量 --> <out-tooltip-checkbox label="我是一段很长很长的文本" v-model="checked" width="100px"> </out-tooltip-checkbox>
参数说明
参数 | 说明 | 默认值 |
---|---|---|
label | checkbox显示的文本 | 空字符串 |
value | checkbox选中时的值(仅在多选框组中有效) | 空字符串 |
width | checkbox的宽度,超出该宽度的文本会被隐藏,支持px和百分比设置 | 200px |
v-model/checked | checkbox单独使用时,控制是否选中 | false |
tooltipOption | tooltip的配置 - position,值和el-tooltip的placement属性一致,设置提示框展示的位置, 默认top-start,即效果图中的样式 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~