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 Event学习第三章 早期的事件处理程序
Feb 07 Javascript
Jquery插件之多图片异步上传
Oct 20 Javascript
jQuery 自定义函数写法分享
Mar 30 Javascript
JavaScript实现网页图片等比例缩放实现代码及调用方式
Feb 25 Javascript
js+css 实现遮罩居中弹出层(随浏览器窗口滚动条滚动)
Dec 11 Javascript
javascript实现框架高度随内容改变的方法
Jul 23 Javascript
微信小程序 常用工具类详解及实例
Feb 15 Javascript
JS实现经典的中国地区三级联动下拉菜单功能实例【测试可用】
Jun 06 Javascript
Vue.js结合Ueditor富文本编辑器的实例代码
Jul 11 Javascript
微信小程序tabBar底部导航中文注解api详解
Aug 16 Javascript
微信小程序实现打开内置地图功能【附源码下载】
Dec 07 Javascript
使用Vue.js和Flask来构建一个单页的App的示例
Mar 21 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 归并排序 数组交集
2011/05/10 PHP
php 对输入信息的进行安全过滤的函数代码
2012/06/29 PHP
PHP 使用header函数设置HTTP头的示例解析 表头
2013/06/17 PHP
mac下Apache + MySql + PHP搭建网站开发环境
2014/06/02 PHP
JSON字符串传到后台PHP处理问题的解决方法
2016/06/05 PHP
Yii2使用表单上传文件的实例代码
2017/08/03 PHP
9个javascript语法高亮插件 推荐
2009/07/18 Javascript
Javascript调用C#代码
2011/01/17 Javascript
获取3个数组不重复的值的具体实现
2013/12/30 Javascript
js中document.write的那点事
2014/12/12 Javascript
使用AmplifyJS组件配合JavaScript进行编程的指南
2015/07/28 Javascript
javascript实现动态统计图开发实例
2015/11/21 Javascript
js获取鼠标位置实例详解
2015/12/09 Javascript
BootStrap glyphicons 字体图标实现方法
2016/05/01 Javascript
Vue 2.X的状态管理vuex记录详解
2017/03/23 Javascript
带你快速理解javascript中的事件模型
2017/08/14 Javascript
node.js中事件触发器events的使用方法实例分析
2019/11/23 Javascript
JS绘图Flot应用图形绘制异常解决方案
2020/10/16 Javascript
Python yield 小结和实例
2014/04/25 Python
Python字典的基本用法实例分析【创建、增加、获取、修改、删除】
2019/03/05 Python
Python的高阶函数用法实例分析
2019/04/11 Python
python networkx 根据图的权重画图实现
2019/07/10 Python
Django admin禁用编辑链接和添加删除操作详解
2019/11/15 Python
基于TensorFlow常量、序列以及随机值生成实例
2020/01/04 Python
使用celery和Django处理异步任务的流程分析
2020/02/19 Python
用python发送微信消息
2020/12/21 Python
Numpy中的数组搜索中np.where方法详细介绍
2021/01/08 Python
俄罗斯眼镜网: optikaworld
2016/07/31 全球购物
小天鹅官方商城:LittleSwan
2017/06/16 全球购物
求职简历的自我评价怎样写好
2013/10/07 职场文书
继电保护工岗位职责
2014/01/05 职场文书
公司外出活动方案
2014/08/14 职场文书
小学标准化建设汇报材料
2014/08/16 职场文书
后勤工作个人总结
2015/02/28 职场文书
工作态度恶劣检讨书
2015/05/06 职场文书
寒假生活随笔
2015/08/15 职场文书