首页 > 其他分享 >js 检测文本是否溢出

js 检测文本是否溢出

时间:2023-07-11 14:13:46浏览次数:44  
标签:elComputed const js range eles 文本 溢出

自定义指令的方式

手写实现

/**
 * 检测文本是否溢出
 * 参考 https://github.com/ElemeFE/element/blob/dev/packages/table/src/table-body.js#L241
 * @param {*} e
 * @returns
 */
function isEllipsis(e) {
  return new Promise(resolve => {
    const el = window.event || e; // 浏览器兼容,最好写一下
    const eles = el.target;
    const elComputed = document.defaultView.getComputedStyle(eles, '');
    const padding =
      parseInt(elComputed.paddingLeft.replace('px', '')) + parseInt(elComputed.paddingRight.replace('px', ''));

    const range = document.createRange();
    range.setStart(eles, 0);
    range.setEnd(eles, eles.childNodes.length);
    const rangeWidth = range.getBoundingClientRect().width;
    if (rangeWidth + padding > eles.offsetWidth || eles.scrollWidth > eles.offsetWidth) {
      resolve(true);
      console.log('溢出了');
    } else {
      resolve(false);
      console.log('没有溢出了');
    }
  });
}

tip:这个方法可以直接使用在elementplus的表头超出配置里面,具体的方法请参考ElementPlus 全局配置

标签:elComputed,const,js,range,eles,文本,溢出
From: https://www.cnblogs.com/sxdpanda/p/17544464.html

相关文章

  • go语言-不同类型转换为JSON格式数据
    1.将结构体转换为JSON:packagemainimport( "encoding/json" "fmt")typePersonstruct{ Namestring Ageint Emailstring}funcmain(){ person:=Person{Name:"Alice",Age:25,Email:"[email protected]"} ......
  • JS基础
    js基础之前学习的都忘了,重来一,js简介ECMAscript是javascript标准,所以一般情况下我们认为这是一个意思实际上javascript要更大一些完整的javascript实现应该由以下三个部分构成ECMAscriptDOMBOM构成 js的特点:解释型语言类似于java和c语言的结构动态语言基......
  • 细节决定成败,聊聊JS的类型(下)
    讲完了基本类型,我们来介绍一个现象:类型转换。因为JS是弱类型语言,所以类型转换发生非常频繁,大部分我们熟悉的运算都会先进行类型转换。大部分类型转换符合人类的直觉,但是如果我们不去理解类型转换的严格定义,很容易造成一些代码中的判断失误。其中最为臭名昭著的是JavaScript......
  • 一次元数据空间内存溢出的排查记录
    在应用中,我们使用的 SpringData ES的 ElasticsearchRestTemplate来做查询,使用方式不对,导致每次ES查询时都新实例化了一个查询对象,会加载相关类到元数据中。最终长时间运行后元数据出现内存溢出;问题原因:类加载过多,导致元数据OOM。非类实例多或者大对象问题;排查方式:查看JVM运......
  • 【JavaScript】js 处理复制函数实现
    consthandleCopy=()=>{if(!keywordList.value.length)returnElMessage.warning('没有数据');consttext=JSON.stringify(keywordList.value);constinput=document.createElement('input');input.setAttribute('readonly......
  • 内存溢出案例实战
    内存溢出案例实战一.JVM内存参数配置1.给项目的tomcat的catalina.sh添加配置参数cd/usr/src/tomcat-pinter/binvicatalina.sh在第二行添加以下配置:JAVA_OPTS="-Xms512m-Xmx512m-Xmn256m-Xss1024k-XX:MetaspaceSize=512m-XX:MaxMetaspaceSize=512m-XX:+UseConcMarkSweepGC......
  • React18+Next.js13+TS,B端+C端完整业务+技术双闭环(20章)
    最新React技术栈,实战复杂低代码项目-仿问卷星第1章开期准备试看3节|20分钟介绍课程内容,学习建议和注意事项。演示课程项目,让学员有一个整体的认识。第2章【入门】什么是ReactReact引领了现代前端开发的变革8节|50分钟介绍React的历史、背景和每次版本更新。介绍R......
  • JSP环境搭建教程(保姆级!!)
    简介JavaServerPages(JSP)是一种由SunMicrosystems开发的用于创建动态网页的技术。它是JavaEE(JavaEnterpriseEdition)技术的一部分,允许开发者在HTML中嵌入Java代码,从而实现动态内容的生成。JSP主要由两部分组成:静态数据和JSP元素。静态数据可以是任何类型......
  • vue.config.js
    const{defineConfig}=require("@vue/cli-service");module.exports=defineConfig({//默认:'/',部署应用包时的基本URL,VueCLI会假设你的应用是被部署在一个域名的根路径上,如果是部署在一个子路径上,比如在https://www.my-app.com/my-app/,则设置publicPath:/my-app/......
  • eletron安装卡在 node install.js,解决方案
    问题:eletron安装卡在nodeinstall.js编辑~/.npmrc加入下面内容此命令直接打开.npmrc文件,然后对其进行修改npmconfigedit加入如下代码:registry=https://registry.npm.taobao.orgelectron_mirror="https://npm.taobao.org/mirrors/electron/"然后运行安装命令,问题顺......