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 相关文章推荐
Javascript生成json的函数代码(可以用php的json_decode解码)
Jun 11 Javascript
jquery中 $.expr使用实例介绍
Jun 09 Javascript
Extjs根据条件设置表格某行背景色示例
Jul 23 Javascript
js propertychange和oninput事件
Sep 28 Javascript
JavaScript通过事件代理高亮显示表格行的方法
May 27 Javascript
js实现黑色简易的滑动门网页tab选项卡效果
Aug 31 Javascript
jQuery实现可高亮显示的二级CSS菜单效果
Sep 01 Javascript
关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)
Dec 14 Javascript
纯原生js实现table表格的增删
Jan 05 Javascript
js判断是否是手机页面
Mar 17 Javascript
vue 单页应用和多页应用的优劣
Oct 22 Javascript
JavaScript 如何在浏览器中使用摄像头
Dec 02 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你的验证码安全码?
2007/01/02 PHP
PHP 通过Socket收发十六进制数据的实现代码
2013/08/16 PHP
zf框架的db类select查询器join链表使用示例(zend框架)
2014/03/14 PHP
PHP基于SMTP协议实现邮件发送实例代码
2017/04/27 PHP
PHP开发之归档格式phar文件概念与用法详解【创建,使用,解包还原提取】
2017/11/17 PHP
laravel5.1 ajax post 传值_token示例
2019/10/24 PHP
PHP 实现链式操作
2021/03/09 PHP
ExtJS 下拉多选框lovcombo
2010/05/19 Javascript
jQuery 1.5.1 发布,全面支持IE9 修复大量bug
2011/02/26 Javascript
在javascript中关于节点内容加强
2013/04/11 Javascript
Javascript中的Array数组对象详谈
2014/03/03 Javascript
js获取json元素数量的方法
2015/01/27 Javascript
javascript 实现map集合
2015/04/03 Javascript
js识别uc浏览器的代码
2015/11/06 Javascript
jQuery插件FusionCharts绘制的2D帕累托图效果示例【附demo源码】
2017/03/28 jQuery
jQuery 实时保存页面动态添加的数据的示例
2017/08/14 jQuery
js实现登录注册框手机号和验证码校验(前端部分)
2017/09/28 Javascript
JavaScript实现计数器基础方法
2017/10/10 Javascript
详解各版本React路由的跳转的方法
2018/05/10 Javascript
vue-quill-editor+plupload富文本编辑器实例详解
2018/10/19 Javascript
Vue 报错TypeError: this.$set is not a function 的解决方法
2018/12/17 Javascript
详解vue 兼容IE报错解决方案
2018/12/29 Javascript
Python模拟登陆淘宝并统计淘宝消费情况的代码实例分享
2016/07/04 Python
Python实用技巧之利用元组代替字典并为元组元素命名
2018/07/11 Python
Django 实现Admin自动填充当前用户的示例代码
2019/11/18 Python
分享30个新鲜的CSS3打造的精美绚丽效果(附演示下载)
2012/12/28 HTML / CSS
Coach澳大利亚官方网站:美国著名时尚奢侈品牌
2017/05/24 全球购物
美国女孩洋娃娃店:American Girl
2017/10/24 全球购物
世界上最好的野生海鲜和有机食品:Vital Choice
2020/01/16 全球购物
描述Cookie和Session的作用,区别和各自的应用范围,Session工作原理
2015/03/25 面试题
计算机系毕业生推荐信
2013/11/06 职场文书
大学生毕业自我鉴定范文
2014/02/03 职场文书
党的群众路线教育实践活动总结报告
2014/04/28 职场文书
我爱我校演讲稿
2014/05/21 职场文书
Java Optional<Foo>转换成List<Bar>的实例方法
2021/06/20 Java/Android
vue+echarts实现多条折线图
2022/03/21 Vue.js