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 相关文章推荐
[原创]IE view-source 无法查看看源码 JavaScript看网页源码
Jul 19 Javascript
网站如何做到完全不需要jQuery也可以满足简单需求
Jun 27 Javascript
jquery animate实现鼠标放上去显示离开隐藏效果
Jul 21 Javascript
JavaScript数组随机排列实现随机洗牌功能
Mar 19 Javascript
利用js实现禁止复制文本信息
Jun 03 Javascript
分享jQuery封装好的一些常用操作
Jul 28 Javascript
js初始化验证实例详解
Nov 26 Javascript
jQuery.cookie.js实现记录最近浏览过的商品功能示例
Jan 23 Javascript
微信小程序 使用腾讯地图SDK详解及实现步骤
Feb 28 Javascript
vue 组件使用中的一些细节点
Apr 25 Javascript
vue组件横向树实现代码
Aug 02 Javascript
vue.js实现双击放大预览功能
Jun 23 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
AJAX for PHP简单表数据查询实例
2007/01/02 PHP
php获取数组中重复数据的两种方法
2013/06/28 PHP
php 中序列化和json使用介绍
2013/07/08 Javascript
javascript中bind函数的作用实例介绍
2014/09/28 Javascript
JavaScript分页功能的实现方法
2015/04/25 Javascript
JavaScript阻止回车提交表单的方法
2015/12/30 Javascript
AngularJS基础 ng-keyup 指令简单示例
2016/08/02 Javascript
HTML5实现微信拍摄上传照片功能
2017/04/21 Javascript
vue.js select下拉框绑定和取值方法
2018/03/03 Javascript
jQuery添加新内容的四个常用方法分析【append,prepend,after,before】
2019/03/19 jQuery
从0到1搭建Element的后台框架的方法步骤
2019/04/10 Javascript
详解vue使用$http服务端收不到参数
2019/04/19 Javascript
原生JS使用Canvas实现拖拽式绘图功能
2019/06/05 Javascript
ES6 Symbol数据类型的应用实例分析
2019/06/26 Javascript
vue父子组件通信的高级用法示例
2019/08/29 Javascript
Node.js fs模块原理及常见用途
2020/10/22 Javascript
vue 封装面包屑组件教程
2020/11/16 Javascript
python和C语言混合编程实例
2014/06/04 Python
Python首次安装后运行报错(0xc000007b)的解决方法
2016/10/18 Python
python一键去抖音视频水印工具
2018/09/14 Python
Python 经典面试题 21 道【不可错过】
2018/09/21 Python
关于ZeroMQ 三种模式python3实现方式
2019/12/23 Python
python 中的paramiko模块简介及安装过程
2020/02/29 Python
Django微信小程序后台开发教程的实现
2020/06/03 Python
python3的pip路径在哪
2020/06/23 Python
HTML5高仿微信聊天、微信聊天表情|对话框|编辑器功能
2018/04/23 HTML / CSS
专科文秘应届生求职信
2013/11/18 职场文书
大学本科毕业生的自我鉴定范文
2013/11/19 职场文书
高中毕业的自我鉴定
2013/12/09 职场文书
大学毕业生通用自我评价
2014/01/05 职场文书
教师政风行风自查自纠报告
2014/10/21 职场文书
2014年党务工作总结
2014/11/25 职场文书
交流会主持词
2015/07/02 职场文书
员工安全责任协议书
2016/03/22 职场文书
2019最新企业员工考勤管理制度(通用版)!
2019/07/02 职场文书
CPU不支持Windows11系统怎么办
2021/11/21 数码科技