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类和继承 constructor属性
Mar 04 Javascript
自用js开发框架小成 学习js的朋友可以看看
Nov 16 Javascript
javascript使用百度地图api和html5特性获取浏览器位置
Jan 10 Javascript
JS实现从表格中动态删除指定行的方法
Mar 31 Javascript
轻松实现javascript图片轮播特效
Jan 13 Javascript
Vue.js每天必学之Class与样式绑定
Sep 05 Javascript
js实现PC端根据IP定位当前城市地理位置
Feb 22 Javascript
React Native之TextInput组件解析示例
Aug 22 Javascript
React复制到剪贴板的示例代码
Aug 22 Javascript
详解小程序中h5页面onShow实现及跨页面通信方案
May 30 Javascript
JS实现小星星特效
Dec 24 Javascript
解决VUE mounted 钩子函数执行时 img 未加载导致页面布局的问题
Jul 27 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/01/18 PHP
基于PHP生成简单的验证码
2016/06/01 PHP
PHP中关于php.ini参数优化详解
2020/02/28 PHP
用JavaScript编写COM组件的步骤
2009/03/17 Javascript
Jquery uploadify图片上传插件无法上传的解决方法
2013/12/16 Javascript
javascript操作excel生成报表全攻略
2014/05/04 Javascript
原生的html元素选择器类似jquery选择器
2014/10/15 Javascript
在JavaScript中处理字符串之link()方法的使用
2015/06/08 Javascript
AngularJs Dependency Injection(DI,依赖注入)
2016/09/02 Javascript
原生js实现倒计时功能(多种格式调用)
2017/01/12 Javascript
5分钟打造简易高效的webpack常用配置
2017/07/04 Javascript
解决vue router使用 history 模式刷新后404问题
2017/07/19 Javascript
基于Bootstrap table组件实现多层表头的实例代码
2017/09/07 Javascript
[39:19]完美世界DOTA2联赛PWL S2 SZ vs LBZS 第二场 11.26
2020/11/30 DOTA
[01:02:38]DOTA2-DPC中国联赛定级赛 LBZS vs Phoenix BO3第二场 1月10日
2021/03/11 DOTA
Python2与python3中 for 循环语句基础与实例分析
2017/11/20 Python
Python解析命令行读取参数--argparse模块使用方法
2018/01/23 Python
python 实现selenium断言和验证的方法
2019/02/13 Python
Python基础学习之基本数据结构详解【数字、字符串、列表、元组、集合、字典】
2019/06/18 Python
如何使用Python 打印各种三角形
2019/06/28 Python
Python return语句如何实现结果返回调用
2020/10/15 Python
Python实现树莓派摄像头持续录像并传送到主机的步骤
2020/11/30 Python
HTML5本地存储之Web Storage详解
2016/07/04 HTML / CSS
canvas生成带二维码海报的踩坑记录
2019/09/11 HTML / CSS
饿了么订餐官网:外卖、网上订餐
2019/06/28 全球购物
英国排名第一的LED灯泡网站:LED Bulbs
2019/09/03 全球购物
Vilebrequin美国官方网上商店:法国豪华泳装品牌
2020/02/22 全球购物
澳洲CFL商城:CHEMIST FOR LESS(中文)
2021/02/28 全球购物
Ajax的工作原理
2015/12/04 面试题
《老王》教学反思
2014/02/23 职场文书
三月法制宣传月活动总结
2014/07/03 职场文书
新党章心得体会
2014/09/04 职场文书
授权收款委托书
2014/09/23 职场文书
综合测评自我评价
2015/03/06 职场文书
会计专业2019暑假实习报告
2019/06/21 职场文书
JavaWeb 入门:Hello Servlet
2021/07/16 Java/Android