博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
你真的知道什么情况下text-overflow:ellipsis才会生效吗?
阅读量:5772 次
发布时间:2019-06-18

本文共 1298 字,大约阅读时间需要 4 分钟。

text-overflow:ellipsis是我们用来设置文本溢出的一个常用属性。

但是究竟什么情况才会触发文本溢出,大部分人肯定没有探究过。

我以前也没有注意,反正这样的css样式一把梭,溢出了就点点点

width: 100px;overflow: hidden;text-overflow: ellipsis;

本来是没啥问题的,直到测试给我提了一个bug:表格内的文字超长隐藏后鼠标hover没有悬浮提示

clipboard.png

我一个开始不信,我用的element-UI还会出问题?

不过看完源码以后果然翻车了

const cellChild = event.target.querySelector('.cell');if (hasClass(cellChild, 'el-tooltip') && cellChild.scrollWidth > cellChild.offsetWidth && this.$refs.tooltip) {//执行悬浮窗显示操作}

问题就出在了cellChild.scrollWidth > cellChild.offsetWidth

为了方便控制元素宽度,设置了box-sizing: border-box;
按照理解scrollWidth是内容的宽度,offsetWidth是容器的宽度。
也不会出问题,但是谁也没想到当scrollWidth===offsetWidth时,
text-overflow:ellipsis居然生效了。
重现效果:

我天真的以为cellChild.scrollWidth >= cellChild.offsetWidth不就完事了。

知道我看了element-UI最新的代码才发现自己错了,原来scrollWidth超出offsetWidth并不是text-overflow:ellipsis触发的条件。

const range = document.createRange();      range.setStart(cellChild, 0);      range.setEnd(cellChild, cellChild.childNodes.length);      const rangeWidth = range.getBoundingClientRect().width;      const padding = (parseInt(getStyle(cellChild, 'paddingLeft'), 10) || 0) +        (parseInt(getStyle(cellChild, 'paddingRight'), 10) || 0);

使用对象截取dom片段后获取到的对象的width才是内容的真正宽度。(scrollWidth并不是内容区域的真正宽度)

也就是说当

//加padding是应为box-sizing:border-box;rangeWidth + padding > cellChild.offsetWidth

成立时才是触发text-overflow:ellipsis真正的条件。

转载地址:http://bgaux.baihongyu.com/

你可能感兴趣的文章
Bug多,也别乱来,别被Bug主导了开发
查看>>
sed 替换基础使用
查看>>
高性能的MySQL(5)创建高性能的索引一B-Tree索引
查看>>
附件3:eclipse memory analyze使用教程
查看>>
oracle备份与恢复--rman
查看>>
Postfix邮件发送和接收实验
查看>>
图片变形的抗锯齿处理方法
查看>>
Effective C++ Item 32 确保你的 public 继承模子里出来 is-a 关联
查看>>
phpstorm安装laravel-ide-helper实现自动完成、代码提示和跟踪
查看>>
Resume简历中装B的词汇总结大全
查看>>
python udp编程实例
查看>>
TortoiseSVN中图标的含义
查看>>
js原生继承之——构造函数式继承实例
查看>>
linux定时任务的设置
查看>>
[CareerCup] 13.3 Virtual Functions 虚函数
查看>>
[Angular 2] ng-model and ng-for with Select and Option elements
查看>>
Visio中如何让重叠图形都显示
查看>>
Tasks and Back stack 详解
查看>>
关于EXPORT_SYMBOL的作用浅析
查看>>
成功的背后!(给所有IT人)
查看>>