【发布时间】:2018-02-07 05:53:06
【问题描述】:
我找到了一个很棒的 html 截断库 truncate.js,它可以满足我大约 99% 的需求。但我有一个困扰我的问题。我有一个要求,要求将“显示更多”放在一系列帖子的特定行数的末尾……这个库设法为一块文本实现……但是当涉及到多行文本显示时more 没有正确定位。
我已经发了plunker 来演示这个问题。我想要的只是能够将 show more 放置在多行文本的相同位置,就像它显示在同一页面上的文本块一样。
我的第一次尝试是在 truncateNestedNodeEnd 函数中添加 prev()
if ($clipNode.length) {
if ($.inArray(element.tagName.toLowerCase(), BLOCK_TAGS) >= 0) {
// Certain elements like <li> should not be appended to.
$element.after($clipNode);
}
else
{
//edited this line to add prev()
//$element.append($clipNode)
$element.prev().append($clipNode);
}
}`
这给了我想要的多行文本,但它破坏了文本块的原始功能,如 plunker 所示。如何使此功能适用于这两种情况。当这两个帖子位于同一页面时,我仍然想在黄色部分显示更多内容。
【问题讨论】:
-
为什么要用一个没用的js来做css能做到的事情?你仍然可以在没有任何库的情况下做到这一点
-
@MarcoSalerno 我不认为在这方面使用js是无用的。仅 CSS 无法实现我所需要的。 .我们最初使用 css,但它不满足以下要求“截断文本应立即显示在段落或多行文本中的动态文本的最后一行之后”。使用 css,我们设法将“显示更多”绝对定位在右侧……效果很好,但这不是我们想要的……“显示更多”应根据其长度附加在文本旁边。
标签: javascript truncate truncation