单行文本溢出和多行文本溢出显示省略号

对于单行文本溢出,css 代码如下:

.test{
    width: value;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

'value' 为想要设置的宽度,对于多文本溢出,需要用到 js,代码如下:

textOverflow('.test')
function textOverflow(obj){
    var oH, oText;
    oH    = $(obj).height();
    oText = $(obj).children();
    if (oText.outerHeight() > oH) {
        while (oText.outerHeight() > oH) {
            oText.html(oText.html().replace(/(\s)*([a-zA-Z0-9]+|\W)(\.\.\.)?$/, "..."));
        }
        var text = oText.html();
        if (text.substring(text.length-3) != '...') {
            if (text.substring(text.length-4) == '<br>') {
                oText.html(text.replace(/<br>$/, "..."));
            }else {
                oText.html(text + '...')
            }                   
        }       
    }
}

对于上面的 js 代码,只要先设置 test 的宽高就行。js 代码中后面判断文本最后面3个字符是不是省略号(为了防止文本是通过多个 br 标签换行,而不会出现省略号),但是它限制了 html 的布局,大致布局如下:

<div class="test">
    <div>
       <!--  文本内容 -->
    </div>  
</div>

test 里面那个 div 标签可以换成 p、span、a、code 等等标签(楼主只试了这几个),但是 test 里面需要有只能有一个子元素,不然获取的 oText 不是文本内容。

如果小伙伴们有什么更好的办法来亮瞎楼主的那个什么眼,欢迎在评论中留言。

 

posted @ 2016-08-16 17:18  yu.l  阅读(547)  评论(0编辑  收藏  举报