行文本溢出显示省略号(...)的方法

我的使用的方法javascript

.ellipsis1 {
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
}

.ellipsis2 {
    text-overflow: -o-ellipsis-lastline;
    overflow: hidden;
    text-overflow: ellipsis;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
}

 

 

如下转载相关介绍:css

如今的浏览器都支持text-overflow:ellipsis属性,用来实现单行文本的溢出显示省略号,可是这个属性并不支持多行文本。那么有没有方法在多行文本上实现一样的效果呢?
html

-webkit-line-clamp

Webkit支持一个名为-webkit-line-clamp的属性,他实际上是一个WebKit-Specific Unsupported Property,也就是说这个属性并非标准的一部分,多是Webkit内部使用的,或者被弃用的属性。可是既然被人发现了,并且能用,为何不试试呢~o(∩_∩)ojava

p { overflow : hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; } 

Demo: http://jsfiddle.net/Cople/maB8f/jquery

-o-ellipsis-lastline

从 Opera 10.60 开始,text-overflow属性有了一个名为-o-ellipsis-lastline的值。应用后的效果就像名字同样,在文本的最后一行加上省略号。这个方法比楼上的方法简单多了,惋惜也不在标准以内//(ㄒoㄒ)//web

p { overflow: hidden; white-space: normal; height: 3em; text-overflow: -o-ellipsis-lastline; } 

Demo: http://jsfiddle.net/Cople/ash5v/浏览器

jQuery

除了各个浏览器私有的属性,有没有跨浏览器的解决方法呢?固然是经过js实现啦!(经过从后向前逐个删除末尾字符,直至元素的高度小于父元素高度)app

$(".figcaption").each(function(i){ var divH = $(this).height(); var $p = $("p", $(this)).eq(0); while ($p.outerHeight() > divH) { $p.text($p.text().replace(/(\s)*([a-zA-Z0-9]+|\W)(\.\.\.)?$/, "...")); }; }); 

Demo: http://jsfiddle.net/Cople/DrML4/5/ui

HTMLjQuery教程this

相关文章
相关标签/搜索