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 相关文章推荐
百度留言本js 大家可以参考下
Oct 13 Javascript
Extjs4 关于Store的一些操作(加载/回调/添加)
Apr 18 Javascript
Jquery+CSS3实现一款简洁大气带滑动效果的弹出层
May 15 Javascript
jQuery中 attr() 方法使用小结
May 03 Javascript
javascript常见数据验证插件大全
Aug 03 Javascript
JavaScript中日常收集常见的10种错误(推荐)
Jan 08 Javascript
JS基于正则截取替换特定字符之间字符串操作示例
Feb 03 Javascript
vue组件实现可搜索下拉框扩展
Oct 23 Javascript
Vue.js实现双向数据绑定方法(表单自动赋值、表单自动取值)
Aug 27 Javascript
详解Js里的for…in和for…of的用法
Mar 28 Javascript
详解Vite的新体验
Feb 22 Javascript
vue修饰符.capture和.self的区别
Apr 22 Vue.js
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
snoopy 强大的PHP采集类使用实例代码
2010/12/09 PHP
php模拟js函数unescape的函数代码
2012/10/20 PHP
PHP中变量引用与变量销毁机制分析
2014/11/15 PHP
PHP递归遍历指定文件夹内的文件实现方法
2016/11/15 PHP
js,jQuery 排序的实现代码,网页标签排序的实现,标签排序
2011/04/27 Javascript
开发 Internet Explorer 右键功能表(ContextMenu)
2013/07/03 Javascript
输入框过滤非数字的js代码
2014/09/18 Javascript
JQuery.get提交页面不跳转的解决方法
2015/01/13 Javascript
jQuery实现弹出窗口中切换登录与注册表单
2015/06/05 Javascript
开启BootStrap学习之旅
2016/05/04 Javascript
有关JavaScript中call()和apply() 的一些理解
2016/05/20 Javascript
bootstrap datetimepicker2.3.11时间插件使用
2016/11/19 Javascript
解决Angular.Js与Django标签冲突的方案
2016/12/20 Javascript
JSON与js对象序列化实例详解
2017/03/16 Javascript
vue2.0项目中使用Ueditor富文本编辑器示例代码
2017/08/14 Javascript
Vue修改mint-ui默认样式的方法
2018/02/03 Javascript
Node.js readline 逐行读取、写入文件内容的示例
2018/03/01 Javascript
开发一个Parcel-vue脚手架工具(详细步骤)
2018/09/22 Javascript
js中数组常用方法总结(推荐)
2019/04/09 Javascript
深入理解vue中的slot与slot-scope
2019/04/22 Javascript
微信小程序API—获取定位的详解
2019/04/30 Javascript
小程序云开发教程如何使用云函数实现点赞功能
2019/05/18 Javascript
微信小程序获取用户绑定手机号方法示例
2019/07/21 Javascript
修改Vue打包后的默认文件名操作
2020/08/12 Javascript
JavaScript检测是否开启了控制台(F12调试工具)
2020/10/02 Javascript
JS highcharts实现动态曲线代码示例
2020/10/16 Javascript
基于Python 装饰器装饰类中的方法实例
2018/04/21 Python
python list是否包含另一个list所有元素的实例
2018/05/04 Python
ActiveMQ:使用Python访问ActiveMQ的方法
2019/01/30 Python
Django如何实现上传图片功能
2019/08/16 Python
喜诗官方在线巧克力店:See’s Candies
2017/01/01 全球购物
Rhone官方网站:男士运动服装、健身服装和高级运动服
2019/05/01 全球购物
学员自我鉴定
2014/03/19 职场文书
房屋租赁协议书
2014/04/10 职场文书
初婚未育证明样本
2014/10/24 职场文书
投诉信格式范文
2015/07/02 职场文书