js:判断文本溢出隐藏生效text
js:判断文本溢出隐藏生效text
效果展示
参数汇总
看上图,不难发现,文字有超出的条件是
target.scrollWidth > target.offsetWidth
可以通过js判断是否生效,参考element-ui的代码实现
.js#L241
它多了一个判断
rangeWidth + padding > target.offsetWidth
完整代码
<template><div class=""><h2>正常显示 border</h2><divid="text-1"class="border">水光潋滟晴方好,山色空濛雨亦奇。欲把西湖比西子,淡妆浓抹总相宜。</div><div id="text-1-label"></div><h2>设置宽度 border width--100</h2><divid="text-2"class="border width--100">水光潋滟晴方好,山色空濛雨亦奇。欲把西湖比西子,淡妆浓抹总相宜。</div><div id="text-2-label"></div><h2>设置宽度+不换行 border width--100 white-space--nowrap</h2><divid="text-3"class="border width--100 white-space--nowrap">水光潋滟晴方好,山色空濛雨亦奇。欲把西湖比西子,淡妆浓抹总相宜。</div><div id="text-3-label"></div><h2>设置宽度+不换行+溢出隐藏 border width--100 white-space--nowrapoverflow--hidden</h2><divid="text-4"class="border width--100 white-space--nowrap overflow--hidden">水光潋滟晴方好,山色空濛雨亦奇。欲把西湖比西子,淡妆浓抹总相宜。</div><div id="text-4-label"></div><h2>设置宽度+不换行+溢出隐藏+溢出省略号 border width--100 white-space--nowrapoverflow--hidden text-overflow--ellipsis</h2><divid="text-5"class="border width--100 white-space--nowrap overflow--hidden text-overflow--ellipsis">水光潋滟晴方好,山色空濛雨亦奇。欲把西湖比西子,淡妆浓抹总相宜。</div><div id="text-5-label"></div><h2>显示为行内块元素 border display--inline-block</h2><divid="text-6"class="border display--inline-block">水光潋滟晴方好,山色空濛雨亦奇。欲把西湖比西子,淡妆浓抹总相宜。</div><div id="text-6-label"></div></div>
</template><script>
export default {name: 'index',props: {},components: {},data() {return {}},computed: {},methods: {handleCellMouseEnter(target) {function getStyle(element, property = null) {const css = window.getComputedStyle(element, null)return property ? css[property] : css}// console.log(e.target)// let target = e.targetconst range = document.createRange()range.setStart(target, 0)range.setEnd(target, target.childNodes.length)// console.log(range)const rangeWidth = range.getBoundingClientRect().widthconst padding =(parseInt(getStyle(target, 'paddingLeft'), 10) || 0) +(parseInt(getStyle(target, 'paddingRight'), 10) || 0)let data = {rangeWidth,padding,'rangeWidth+padding': rangeWidth + padding,offsetWidth: target.offsetWidth,scrollWidth: target.scrollWidth,}document.querySelector(`#${target.id}-label`).innerText =JSON.stringify(data)if (rangeWidth + padding > target.offsetWidth ||target.scrollWidth > target.offsetWidth) {console.log('有隐藏文字...')} else {console.log('没有隐藏文字')}return data// console.log(target.innerText || target.textContent)},},mounted() {let list = [...document.querySelectorAll('[id^="text"]')]let data = []for (let item of list) {if (item.id.endsWith('label')) {continue}let res = this.handleCellMouseEnter(item)data.push(res)}console.table(data)},created() {},
}
</script><style lang="less"></style><style lang="less" scoped>
h2 {margin-top: 50px;line-height: 1.5;font-weight: 500;
}.border {box-sizing: border-box;border: 1px solid #666;padding: 10px;
}.width--100 {width: 100px;
}.white-space--nowrap {white-space: nowrap;
}.overflow--hidden {overflow: hidden;
}.text-overflow--ellipsis {text-overflow: ellipsis;
}.display--inline-block {display: inline-block;
}
</style>
参考
你真的知道什么情况下text-overflow:ellipsis才会生效吗?
最新文章
- Driller复现
- MindSpore实现语音指令识别(迁移tf入门教程)
- Platform Builder
- 做php的灯就灭,121128 还原 我是做PHP的,女嘉宾把灯全灭了 真相
- 我也来说非诚勿扰
- 重启mysql
- 【转】解决shiro的Principal属性动态修改无效问题
- Specification 参数的用法
- Element
- 搭建网站的步骤有哪些?
- 如何下载打印计算机二级准考证(江西)
- TCPIP:认识TCP
- 聚类分析及R编程实现
- 微信小程序多个倒计时
- wrcoef2函数
- Shiro登录的使用以及原理(一)
- shiro反序列化漏洞的原理和复现
- lssvm实例
- DBCC 简介
- 【C语言进阶】C语言实现通讯录