当前位置: 首页 > 知识库问答 >
问题:

javascript - 计算文本显示了多少行?

方弘
2024-05-07

问题背景: 显示一段文本,如果文本超过十行显示展开,收起按钮,按钮占一整行。文本有换行符。
问题:怎么计算文本实际占多少行。

尝试:使用z-index= -1先显示文本,计算文本高度。大于一个固定高度高度来判断。是否超过十行。
疑问:

 1.中文和英文的文本高度不一样,固定高度不准确。 2.z-index = -1 来计算觉得要显示两遍文本信息

共有3个答案

伍皓
2024-05-07

纯 CSS 检测文本是否溢出

里面还有一堆的链接

dom 获取不到?试试 CSS 动画监听元素渲染吧尝试借助CSS @container实现多行文本展开收起突发奇想!借助CSS自定义彩色字体来实现多行文本展开收起CSS 实现多行文本“展开收起”CSS 文本超出提示效果
颜嘉福
2024-05-07

你的思路没有错,

  1. 主动设定好文本区域的line-height,就避开了高度计算不准确的问题。
  2. 使用一个独立隐藏区域输出文本(visibility为hidden,绝对定位,将位置设定到可视区域外,比如 top -9999px),计算高度,除以 line-height得到行数。
  3. 然后在正式展示区域按照计算的行数进行条件展示。
赫连瑾瑜
2024-05-07

要准确计算文本占用的行数,可以使用以下方法:

  1. 使用HTML和CSS
* 将文本放入一个固定宽度的容器中。* 使用CSS的`line-height`属性来设置行高。* 通过JavaScript计算容器的高度,并除以`line-height`来得到行数。
  1. 处理中英文高度不一致
* 可以为英文和中文设置不同的`line-height`。* 或者,使用字体度量API(如`measureText`)来测量每个字符的宽度,然后根据容器的宽度来计算大致的行数。但这种方法可能不太准确,尤其是当文本中有宽度可变的字符(如中文)时。
  1. 避免显示两遍文本信息
* 你可以使用一个隐藏的容器来测量文本高度,而不是使用`z-index`。这个隐藏的容器在视觉上不可见,但可以用于计算。

以下是一个简单的示例,展示如何使用HTML和JavaScript来计算文本的行数:

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <title>Calculate Text Lines</title>    <style>        .text-container {            width: 300px; /* 设置容器宽度 */            line-height: 1.5em; /* 设置行高 */            visibility: hidden; /* 隐藏容器,但不影响其布局 */            position: absolute;            top: -9999px; /* 将容器移出视口 */        }    </style></head><body><div class="text-container" id="textContainer">    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</div><script>    function calculateLines() {        const container = document.getElementById('textContainer');        const lineHeight = parseFloat(getComputedStyle(container).lineHeight);        const containerHeight = container.offsetHeight;        const lines = Math.ceil(containerHeight / lineHeight);        console.log(`The text takes up ${lines} lines.`);    }    window.onload = calculateLines;</script></body></html>

在这个示例中,.text-container是一个隐藏的容器,用于测量文本的高度。calculateLines函数计算并输出文本的行数。这种方法考虑了line-height,因此可以更准确地计算行数,而不管文本是中文还是英文。

 类似资料:
  • 如何计算文本更改了多少? 例如以下文本: 与 这里的变化很小(末尾增加了x) 下面的变化很大: (此处我添加了“更多文本”) 我想到了测量字符串长度,并用它来计算变化百分比。但这种方法在以下情况下会出现问题: (几乎相同的长度,但完全不同的文本) 我怀疑很多人遇到了这个问题。但我似乎在谷歌上找不到太多,可能是因为不知道这项技术的名称是什么,它可以测量文本的变化。

  • 问题内容: 我正在寻找一种在响应式网站上创建幻灯片“显示更多”功能的方法,该功能在段落的 两行 之后会中断。 之前,我是通过静态网站来实现此目的的,方法是对容器应用设置的高度并使用,然后对容器的高度进行动画处理。 但是,由于具有响应能力,容器以不同的浏览器宽度压缩文本,因此文本可能会占用更多/更少的空间。每次按下该段落时,该段落上方也可能有不同的内容。因此,该设置可能无法完全覆盖两行。 因此,无论

  • 问题内容: 我一直在忙于一些AJAX代码。我想计算已加载了多少数据,并想用百分比显示它。 我所有的预加载信息都在“反馈”中。我可以计算它包含多少数据(以字节为单位),也可以查看进度吗?就像加载时一样:10kb,20kb,30kb等 我的代码: 对不起,我英语不好。 问题答案: 这 是 可能的。XHRs有一个事件。唯一的问题是访问XHR对象- 不幸的是仅接收该对象,而不接收基础XHR对象。也不能作为

  • 本文向大家介绍如何计算Java对象占用了多少空间?,包括了如何计算Java对象占用了多少空间?的使用技巧和注意事项,需要的朋友参考一下 本文介绍了计算Java对象占用了多少空间的方法,分享给大家供大家参考,具体内容如下 一、对象头 对象的头部至少有两个WORD,如果是数组的话,那么三个WORD,内容如下: 1、对象的HashCode,锁信息等 2、到对象类型数据的指针 3、数组的长度(如果是数组的

  • 请问在Vue3+Cesium上如何根据后端返回的数据,在地图上面显示图片并在图片的上方或者旁边显示后台返回的数据,类似于这样的

  • 问题内容: 我正在做一个新项目。我想知道某个目录中有多少个文件。 这是我到目前为止(从搜索中获得的)。但是,它显示不正确吗?我添加了一些注释,以便随时删除它们,它们是为了使我能尽我所能。 如果您需要更多信息,或者觉得我还没有足够描述,请随时声明。 问题答案: 您可以简单地执行以下操作: