背景
当文字溢出时显示省略号是每一个前端开发工程师必备技能之一,但是文字溢出省略号显示后就无法看到完整内容了,这个时候就可以用到标签的title属性,或者一些UI组件库的tooltip组件,当鼠标移入元素则出现提示气泡,显示完整内容。
前端工程师常见的作法就是让提示气泡一直存在,不管文字是否溢出,鼠标移入都会出现提示气泡。但是有些场景下,需求方要求文字未溢出时鼠标移入不显示提示气泡,文字溢出时才显示提示气泡。
需求总结
文字未溢出时,鼠标移入不出现提示气泡,文字溢出时,鼠标移入显示提示气泡。
实现原理
- 获取到包裹文字元素的宽度
- 给元素添加鼠标移入事件
- 每次鼠标移入时,判断元素宽度是否符合要求
- 如果不符合,则添加气泡,否则不添加
实现代码
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>CSS文字溢出显示提示title或者tooltip</title> <style> div { width: 100px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } </style> </head> <body> <div> <span>我是一段没有用的废话!</span> </div> </body> <script> let dDom = document.getElementsByTagName('div')[0]; let sDom = document.getElementsByTagName('span')[0]; let dDomWidth = sDom.parentNode.offsetWidth; let sDomWidth = sDom.offsetWidth; sDom.addEventListener('mouseover', function () { if (sDomWidth > dDomWidth) { sDom.title = '我是一段没有用的废话!' } }) </script> </html>
总结
实现该种需求的重点就是获取到元素宽度,以及合理的判断宽度。