JavaScript 如何计算文本的行数的实现


Posted in Javascript onSeptember 14, 2020

需求:根据行数决定是否限制展开和收起。

JavaScript 如何计算文本的行数的实现

思路:用2个块统计行高,一个不加高度限制用来统计行数(css隐藏),一个加高度限制用来显示(加高度限制会导致统计行数不准)

要想知道文本的行数,那就需要知道文本的总高度和每一行的高度,总高度除以行高就是行数。当然总高度的计算必须是文字所在的 DOM 没有对高度的限制,随着文本的增加 DOM 要随之变高才行;最后还要考虑 DOM 的样式padding和margin对高度的影响。这样一来我们就可以计算出文本的行数了。总结一下我们需要如下几步:

  • 克隆文本所在的 DOM;
  • 清除 DOM 的高度限制;
  • 获取 DOM 的行高和高度;
  • 计算行数;
  • 去除克隆的 DOM。

相关代码

document.getElementById("noticeContent").innerText = str;//展示的块

 document.getElementById("noticeContent2").innerText = str;//计算行高的块

 

 this.$nextTick(() => {

 let noticeDom = document.getElementById("noticeContent2");

 console.log(noticeDom);

 let style = window.getComputedStyle(noticeDom, null);

 let row = Math.ceil(

 Number(style.height.replace("px", "")) /

 Number(style.lineHeight.replace("px", ""))

 );//总行高 / 每行行高

 console.log("noticeDom===>", style.height, style.lineHeight);

 console.log("rowwwww", row);

 if (row > 2) {//超过2行则显示展开和收起

 this.showOmit = true;

 this.showOpen = true;

 } else {

 this.showOpen = false;

 }

 });

到此这篇关于JavaScript 如何计算文本的行数的实现的文章就介绍到这了,更多相关JavaScript 计算文本行数内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
File文件控件,选中文件(图片,flash,视频)即立即预览显示
Apr 09 Javascript
IE DOM实现存在的部分问题及解决方法
Jul 25 Javascript
jQuery中与toggleClass等价的程序段 以及未来学习的方向
Mar 18 Javascript
Node.js:Windows7下搭建的Node.js服务(来玩玩服务器端的javascript吧,这可不是前端js插件)
Jun 27 Javascript
JavaScript编写推箱子游戏
Jul 07 Javascript
js操作数组函数实例小结
Dec 10 Javascript
Node.js  事件循环详解及实例
Aug 06 Javascript
详解puppeteer使用代理
Dec 27 Javascript
新年快乐! javascript实现超级炫酷的3D烟花特效
Jan 30 Javascript
node.js实现带进度条的多文件上传
Mar 27 Javascript
vue css 相对路径导入问题级踩坑记录
Jun 05 Vue.js
js作用域及作用域链工作引擎
Jul 07 Javascript
JavaScript实现串行请求的示例代码
Sep 14 #Javascript
浅谈JavaScript 声明提升
Sep 14 #Javascript
详解vue 中 scoped 样式作用域的规则
Sep 14 #Javascript
详解JavaScript 高阶函数
Sep 14 #Javascript
vue实现简单计算商品价格
Sep 14 #Javascript
Vue中添加滚动事件设置的方法详解
Sep 14 #Javascript
JavaScript位置参数实现原理及过程解析
Sep 14 #Javascript
You might like
详解php中反射的应用
2016/03/15 PHP
php socket通信简单实现
2016/11/18 PHP
thinkPHP框架实现类似java过滤器的简单方法示例
2018/09/05 PHP
jQuery Dialog 弹出层对话框插件
2010/08/09 Javascript
Javascript 面向对象编程(一) 封装
2011/08/28 Javascript
js自动查找select下拉的菜单并选择(示例代码)
2014/02/26 Javascript
jQuery学习笔记之jQuery中的$
2015/01/19 Javascript
浅谈关于JavaScript API设计的一些建议和准则
2015/06/24 Javascript
JS原型、原型链深入理解
2016/02/27 Javascript
所见即所得的富文本编辑器bootstrap-wysiwyg使用方法详解
2016/05/27 Javascript
关于javascript事件响应的基础语法总结(必看篇)
2016/12/26 Javascript
简单实现js选项卡切换效果
2017/02/09 Javascript
js获取浏览器的各种属性
2017/04/27 Javascript
微信小程序form表单组件示例代码
2018/07/15 Javascript
解决Vue.js由于延时显示了{{message}}引用界面的问题
2018/08/25 Javascript
npm 常用命令详解(小结)
2019/01/17 Javascript
vue+php实现的微博留言功能示例
2019/03/16 Javascript
Vue基于localStorage存储信息代码实例
2020/11/16 Javascript
[36:37]2014 DOTA2华西杯精英邀请赛5 24 VG VS iG
2014/05/25 DOTA
PHP魔术方法__ISSET、__UNSET使用实例
2014/11/25 Python
Python多线程编程(八):使用Event实现线程间通信
2015/04/05 Python
Python实现输出程序执行进度百分比的方法
2017/09/16 Python
python得到一个excel的全部sheet标签值方法
2018/12/10 Python
jupyter notebook 中输出pyecharts图实例
2020/04/23 Python
python3.8.3安装教程及环境配置的详细教程(64-bit)
2020/11/28 Python
马德里竞技官方网上商店:Atletico Madrid Shop
2019/03/31 全球购物
如何进行Linux分区优化
2013/02/12 面试题
自我鉴定怎么写
2013/12/05 职场文书
教师自荐信范文
2013/12/09 职场文书
工作自我评价怎么写
2014/01/29 职场文书
搞笑的获奖感言
2014/08/16 职场文书
2014年企业团支部工作总结
2014/12/10 职场文书
二年级语文下册复习计划
2015/01/19 职场文书
利用Python网络爬虫爬取各大音乐评论的代码
2021/04/13 Python
js Proxy的原理详解
2021/05/25 Javascript
工厂无线对讲系统解决方案
2022/02/18 无线电