计算文本节点宽度
在处理表格时,有时候表格列内容过宽,而需要隐藏部分内容,并且鼠标滑上去显示全部。此时就需要文本宽度的计算。在Element UI里,使用了Range来解决文本的计算。
此外,也可以使用canvas来计算文本节点的宽度。但是在不同的浏览器下,计算的值可能会有非常薛微的差异,但是这点差异对我们的页面效果实现没多大的影响。
On some browsers, this method yields sub-pixel accuracy (result is a floating point number), on others it does not (result is only an int)
使用canvas还需要计算文本的fontSize。使用Range计算算是更合适的方式(兼容性足够)。如果非想使用canvas的话,可以参考*的这个回答calculate-text-width-with-javascript
在Element 下的实现。
const cellChild = event.target.querySelector('.cell');
const range = document.createRange();
range.setStart(cellChild, 0);
range.setEnd(cellChild, cellChild.childNodes.length);
const rangeWidth = range.getBoundingClientRect().width;