三行JS代码配合css解决element-ui selecct组件选项文本过长bug
element
A Vue.js 2.0 UI Toolkit for Web
项目地址:https://gitcode.com/gh_mirrors/eleme/element
免费下载资源
·
项目中用到可下拉选择可输入框,于是自然想到element-ui的select组件。当select组件的下拉选项不满足要求时用户可以输入自己需要的选项。那么问题来了。在某种特殊的情况下,输入的文本过长,而select组件的宽度是固定的(从页面美观的角度基本不允许文本框宽度自适应),这样输入的文本会溢出select组件。
接下来我们分两步来解决这个问题。
1)CSS控制宽度,给输入项一个固定的宽度,当文本超过指定宽度会显示省略号
.el-select__tags-text {
display: inline-block;
width: 40px;
overflow: hidden;
text-overflow:ellipsis;
white-space: nowrap;
}
2)如何显示全部文本
方法一:伪类
当鼠标移动到文本上时,宽度width:auto;此时能显示全部内容,但有个明显的确定会对布局产生破坏。
方法二: 动态添加title
这是本文的重点,当给输入项或者选择项设置一个title时,鼠标移动到选项上会显示title的全部内容。所以问题的关键是如何动态的给每个select组件选项动态添加title.请看下面图片和代码。
setTagTitle() {
var tagTextList = document.querySelector('#app').querySelectorAll('.el-select__tags-text')
tagTextList.forEach( (item) => {
item.setAttribute('title', item.innerText)
})
}
输入项对应的span标签class名为el-select__tags-text,通过选择器querySelector选择所有的选项。然后对所有的选项进行遍历动态添加title属性。title的值就是每个选项的文本值。那么这个事件如何触发呢,可以监听select组件的visible-change事件。
第二种方式是我能想到比较好解决过长文本的bug。如果你有更好的解决方法,欢迎来交流。
GitHub 加速计划 / eleme / element
54.06 K
14.63 K
下载
A Vue.js 2.0 UI Toolkit for Web
最近提交(Master分支:3 个月前 )
c345bb45
7 个月前
a07f3a59
* Update transition.md
* Update table.md
* Update transition.md
* Update table.md
* Update transition.md
* Update table.md
* Update table.md
* Update transition.md
* Update popover.md 7 个月前
更多推荐
已为社区贡献1条内容
所有评论(0)