跨浏览器多行文本溢出,在固定宽度和高度内附加省略号

2022-08-30 01:36:37

我为这个问题制作了一个图像,使它更容易理解。

是否可以在 具有固定宽度和多行的 上创建省略号?<div>

text-overflow

我在这里和那里尝试了一些jQuery插件,但找不到我正在寻找的插件。有什么建议吗?想法?


答案 1

只是一个快速的基本想法。

我使用以下标记进行测试:

<div id="fos">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin nisi ligula, dapibus a volutpat sit amet, mattis et dui. Nunc porttitor accumsan orci id luctus. Phasellus ipsum metus, tincidunt non rhoncus id, dictum a lectus. Nam sed ipsum a lacus sodales eleifend. Vestibulum lorem felis, rhoncus elementum vestibulum eget, dictum ut velit. Nullam venenatis, elit in suscipit imperdiet, orci purus posuere mauris, quis adipiscing ipsum urna ac quam.</p>  
</div>

和 CSS:

#fos { width: 300px; height: 190px; overflow: hidden; }
#fos p { padding: 10px; margin: 0; }

应用此 jQuery 将完成所需的结果:

var $p = $('#fos p');
var divh = $('#fos').height();
while ($p.outerHeight() > divh) {
    $p.text(function (index, text) {
        return text.replace(/\W*\s(\S)*$/, '...');
    });
}

它反复尝试删除文本的最后一个单词,直到它达到所需的大小。由于溢出:隐藏;该过程仍然不可见,即使关闭了JS,结果仍然“视觉上正确”(没有“...”)当然)。

如果将其与服务器端的合理截断相结合(仅留下很小的开销),则它将:)运行得更快。

同样,这不是一个完整的解决方案,只是一个想法。

更新:添加了一个 jsFiddle 演示


答案 2

试试jQuery.dotdotdot插件。

$(".ellipsis").dotdotdot();