el-checkbox实现文本超出设定宽度则超出部分显示为【...】,鼠标移入显示全称提示框

效果图

image-20220113151628066

依赖说明

使用element-ui的el-checkboxel-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,即效果图中的样式
posted @   ぃ往事深处少年蓝べ  阅读(2633)  评论(0编辑  收藏  举报
编辑推荐:
· 从 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的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示