JS实现文字溢出隐藏效果

需求场景

由于项目原因,经常需要使用到canvas来将dom生成为图片供用户保存,但canvas的css属性(例如本文实现的文字溢出隐藏效果)支持并不全面,所有有些功能只能用JS来实现了

实现思路

用JS循环判断填充文本后的元素长度是否超过阈值,如超过就进行调整,缩短一些文本的长度。

遇到的问题

  1. 文本会自动换行,导致元素长度始终符合要求;解决方法:设置css属性white-space: nowrap;来禁止换行。
  2. 使用String.split()将字符串转化为数组的过程中,表情符会出现异常,如下图所示:请添加图片描述
    解决方案是使用Array.from()来进行数组的转化。

最终代码

const box = document.querySelector('em'), // 需要实现此效果的元素text = '😄😄😄😄😄😄😄',maxWidth = 100; // 最大的元素长度box.innerText = text;// 实现溢出隐藏
let textArr = Array.from(text);
while (box.offsetWidth > maxWidth) {text.pop();box.innerText = textArr.join('') + '...';
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/26201.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python NumPy 库详解

大家好,在当今数据驱动的世界中,处理大规模数据、进行复杂数值计算是科学研究、工程设计以及数据分析的关键任务之一。在Python生态系统中,NumPy(Numerical Python)库是一款备受推崇的工具,它为我们提供了高…

PHP调用快递地址解析接口助力项目优化

快递地址智能解析是日常开发中一个重要的工具,可以帮助快递公司提高效率,减少错误,进行数据分析。也可以帮助网购用户快速输入收货地址,提升用户体验。 看完以下操作文档,可以让你在开发中以最快时间完成这个功能&…

mybatis 之 DatabaseIdProvider 教程

mybatis之DatabaseIdProvider 应用中可能同时涉及到多个数据库,比如MySQL,oracle等等,那么当我们使用mybatis的时候,怎么做到动态切换呢?DatabaseIdProvider 可以帮助我们 public interface DatabaseIdProvider {def…

取消el-time-picker组件在Sarari浏览器中下拉回弹效果

在项目中用到el-time-picker组件来选择时间, 但是在Safari浏览器中,滑动分钟列表时,会取消时钟的选择,这是因为滑动分钟列表时有一个回弹效果,回弹把时钟的选择给取消掉了,我们现在要做的就是取消滑动时钟时…

谷歌配置邮箱stmp开发

谷歌的stmp开发,需要一个专用密码 首先要打开二部验证 然后再通过这个链接,创建专用密码 https://myaccount.google.com/u/6/apppasswords?gar1 然后拿专用密码去写在代码上,谷歌发邮件,不知道是不是国内还是什么原因&#xff…

深入理解MySQL分区技术

前言: 在数据量不断增长的当今时代,数据库的性能优化变得尤为重要。MySQL作为一款广泛使用的数据库管理系统,提供了多种性能优化手段,其中分区技术是提升大型表处理效率的有效方法之一。通过将数据分散到多个独立的物理子表中&am…

《大道平渊》· 拾叁 —— 失眠?忍不住乱想?不如反其道而行之!

《平渊》 拾叁 "睡觉的时候就是要胡思乱想" 声明:以下内容针对非失眠症人群,如果失眠不是偶尔发生,而是长期存在,以下内容和你无关,请尽早治疗,遵循医嘱。 失眠的本质是什么?心理因素…

C++并发之锁(std::lock_guard,std::unique_lock)

目录 1 概述2 使用实例3 接口使用3.1 lock_guard3.2 adopt_lock3.3 defer_lock3.4 try_to_lock3.5 try_lock3.6 release3.7 lock3.8 call_one1 概述 锁保护是通过使互斥对象始终处于锁定状态来管理互斥对象的对象。。   在构造时,互斥对象被调用线程锁定,在析构时,互斥被解…

乡村振兴的法治保障:加强农村法治建设,完善乡村治理体系,提高农民法治素养,为美丽乡村建设提供有力保障

目录 一、引言 二、加强农村法治建设的必要性 (一)法治是乡村振兴的基石 (二)法治是乡村治理的保障 (三)法治是农民权益的守护者 三、完善乡村治理体系的路径 (一)加强乡村基…

Talk|CVPR‘24 Oral:超越3D - Point Transformer V3中的多模态特征提取新构想

本期为TechBeat人工智能社区第599期线上Talk。 北京时间6月12日(周三)20:00,香港大学博士生—吴虓杨的Talk已经准时在TechBeat人工智能社区开播! 他与大家分享的主题是: “超越3D - Point Transformer V3中的多模态特征提取新构想”,他通过P…

用教育邮箱在官网安装origin2024中文版教程

打开origin官网,点击learning Edition,教育版只能维持六个月,但是过期之后可以在官网更新,能够免费使用六次,也就是三年。 OriginLab - Origin and OriginPro - Data Analysis and Graphing Software 填写学校信息&…

连接查询-外连接(FULL JOIN)、内连接(JOIN)、自身连接

一、表与表之间存在着某种联系,如果一个查询必须在多个表之间完成,则需要用到连接查询 二、连接查询的SQL查询语句 格式: SELECT A1,A2,...,Am FROM R1,R2,..,Rn WH…

DevExpress WPF中文教程:Grid - 如何完成列和编辑器配置(设计时)?

DevExpress WPF拥有120个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。 无论是Office办公软件…

NSS题目练习9

[极客大挑战 2020]welcome 界面打开后一片空白,查看题目描述,翻译过来是 1.除了GET请求方法,还有一种常见的请求方法… 2.学习一些关于sha1和array的知识。 3.更仔细地检查phpinfo,你会发现标志在哪里。 补充: sh…

什么是端口转发?路由器如何正确的设置端口转发和范围转发?(外网访问必备设置)

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 端口转发 📒🚀 端口转发的应用场景💡 路由器如何设置端口转发(示例)💡 端口范围转发(示例)🎯 范围转发的应用场景🛠️ 设置范围转发📝 范围转发实操示例🎈 注意事项 🎈⚓️ 相关链接 ⚓️📖 介绍 📖 …

pyinstaller打包exe多种失败原因解决方法

pyinstaller打包exe多种失败原因解决方法 目录 pyinstaller打包exe多种失败原因解决方法1、pyinstaller安装有问题1.1 安装pyinstaller1.2 采用anconda的环境启动 2、pyqt5与pyside6冲突2.1 打包生成.spec文件2.2 编辑spec文件 3、打包成功后打不开exe,exe闪退3.1 s…

模拟电子之电子管

如果要实现一个放大器的功能,需要一个固定的放大倍数(Gain),这也就是说输出信号应该是跟随输入信号变化而变化,换句话说输出信号应该要受到输入信号的控制。 在电子学中使用的最多的两个物理量就是电压和电流&#xf…

abap 多线程运行demo

SAP 提供多种多线程的方法去优化程序的执行效率 1.分别执行多个job 2.Call function STARTING NEW TASK 3.直接使用SAP 提供的SPTA 框架函数:SPTA_PARA_PROCESS_START_2 本次,我们着重来介绍一下三种方法中函数的使用方法 获取空闲线程数&#xff1a…

「51媒体」江苏有哪些媒体-参会-宣发-专访-直播

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 在江苏省,媒体资源丰富,涵盖了参会、宣发、专访和直播等多个方面。以下是对这些媒体资源的详细归纳: 一、参会媒体 本地主流媒体:如无锡日…

Vue 项目开启 gzip

1. 压缩方式: 在 Nginx 开启压缩:当浏览器发起请求时,服务端对传输资源进行实时压缩,然后返回给浏览器;前端配置打包压缩并在服务端加上支持 gizp 的配置:当浏览器请求时,服务端直接将压缩资源…