2017-11-07【当文字过长时,用点点点(...)显示】

方法1:css本身有一个文字溢出属性:text-overflow:ellipsis;,当溢出后显示点点点(...)

caniuse_text-overflow.png

去了can i use测了一下text-overflow属性的兼容性,基本上现在主流浏览器都支持。以前Fire Fox不支持,需要额外引入一个xml文件,现在不需要了。

<style>
body{
    font-size: 12px;
}
.text_overflow_ellipsis{
    width:400px;
    white-space: nowrap;
    text-overflow: ellipsis;
    overflow: hidden;
}
</style>

<div class="text_overflow_ellipsis" style="margin: 20px auto; background-color: #cccccc">
    当今世界日新月异,新生事物层出不穷。人生却短短百年,有限的时间面对的是无限的事物。
</div>
1.png

方法2:参照张鑫旭的margin负值定位法

<style>
body{
    font-size: 12px;
}
.zxx_text_overflow {
    width:24em;
    height:1.3em;
    overflow:hidden;
    zoom:1;
}
.zxx_text_overflow .zxx_text{
    float:left;
    height:1.3em;
    margin-right:3em;
    overflow:hidden;
}
.zxx_text_overflow .zxx_dotted{
    width:3em;
    height:1.3em;
    float:right;
    margin-top:-1.3em;
}
</style>

<div class="zxx_text_overflow" style="margin: 20px auto; background-color: #cccccc;">
    <div class="zxx_text" >这是一段比较长的文字,用来测试是否文字溢出时会用省略号显示。</div>
    <div class="zxx_dotted" >…</div>
</div>
2.png

感觉东西还挺多,要是项目中用的多还挺麻烦,可以当成一种思路扩展。

以上方法都不能指定文字的字符数,只能以包裹文字的元素宽度去截取。使用jq就可以实现,并且可以很好的复用,使用时调用函数就可以了。当项目中有许多地方需要用到时,可以使用jq的方法。

方法3:写函数实现该功能,截取特定长度的字符。【同样参照张鑫旭,可看大神博客】

body{
    font-size: 12px;
}

<div class="zxx_text_overflow" style="width:400px; margin: 20px auto; background-color: #cccccc;">
    当今世界日新月异,新生事物层出不穷。人生却短短百年,有限的时间面对的是无限的事物。
</div>

$(document).ready(function(){
    //限制字符个数
    $(".zxx_text_overflow").each(function(){
        var maxwidth = 23;
        if($(this).text().length > maxwidth){
            $(this).text($(this).text().substring(0, maxwidth));
            $(this).html($(this).html()+'…');
        }
    });
});

注意:需要引入jQuery。
1.png

可以看出:是截取了特定长度(23)的字符,而与包裹文字的元素宽度无关。

那么反过来呢?

   var wordLimit=function(){
       $(".zxx_text_overflow").each(function(){
           var copyThis = $(this.cloneNode(true)).hide().css({
               'position': 'absolute',
               'width': 'auto',
               'overflow': 'visible'
           });
       $(this).after(copyThis);
           if(copyThis.width() > $(this).width()){
               $(this).text($(this).text().substring(0,$(this).html().length-4));
               $(this).html($(this).html()+'…');
               copyThis.remove();//清除复制
               wordLimit();
           }else{
               copyThis.remove(); //清除复制
               return;
           }
       });
   };
   wordLimit();

注意:元素一定要设置固定宽度(我设的400px),超出该宽度后就会显示点点点(...)
1.png

那么将以上两种方式结合起来写一个jQuery插件来实现:截取特定字符和超过宽度显示点点点(...)

<div class="zxx_text_overflow1" style="width:400px; margin: 20px auto; background-color: #cccccc;">
    当今世界日新月异,新生事物层出不穷。人生却短短百年,有限的时间面对的是无限的事物。
</div>
<div class="zxx_text_overflow1" style="width:400px; margin: 20px auto; background-color: #cccccc;">
    当今世界日新月异,新生事物层出不穷。人生却短短百年,有限的时间面对的是无限的事物。
</div>
<div class="zxx_text_overflow1" style="width:400px; margin: 20px auto; background-color: #cccccc;">
    当今世界日新月异,新生事物层出不穷。人生却短短百年,有限的时间面对的是无限的事物。
</div>

<div class="zxx_text_overflow2" style="width:400px; margin: 20px auto; background-color: #cccccc;">
    当今世界日新月异,新生事物层出不穷。人生却短短百年,有限的时间面对的是无限的事物。
</div>
<div class="zxx_text_overflow2" style="width:400px; margin: 20px auto; background-color: #cccccc;">
    当今世界日新月异,新生事物层出不穷。人生却短短百年,有限的时间面对的是无限的事物。
</div>
<div class="zxx_text_overflow2" style="width:400px; margin: 20px auto; background-color: #cccccc;">
    当今世界日新月异,新生事物层出不穷。人生却短短百年,有限的时间面对的是无限的事物。
</div>


   (function($){
       $.fn.wordLimit = function(num){
           this.each(function(){
               if(!num){
                   var copyThis = $(this.cloneNode(true)).hide().css({
                       'position': 'absolute',
                       'width': 'auto',
                       'overflow': 'visible'
                   });
                   $(this).after(copyThis);
                   if(copyThis.width() > $(this).width()){
                       $(this).text($(this).text().substring(0,$(this).text().length-4));
                       $(this).html($(this).html()+'...');
                       copyThis.remove();
                       $(this).wordLimit();
                   }else{
                       copyThis.remove();
                       return;
                   }
               }else{
                   var maxwidth=num;
                   if($(this).text().length > maxwidth){
                       $(this).text($(this).text().substring(0, maxwidth));
                       $(this).html($(this).html()+'...');
                   }
               }
           });
       };
       //调用方式:
       $('.zxx_text_overflow1').wordLimit();
       $('.zxx_text_overflow2').wordLimit(23);
   })(jQuery);

注意:不传参数调用时,元素一定要设置宽度。

如何实现:多行文本超出,在最后一行显示点点点(...)

.box{
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}
1.png

IE不支持-webkit-box

1.png

-webkit-line-clamp支持性较差
-webkit-line-clamp就是控制行数的,是3就是显示3行,3行结束点点点(...),如果是2则最多2行,第2行结束显示点点点(...)。

1.png

-webkit-box-orient我竟然没有查到支持性,可能很差。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342

推荐阅读更多精彩内容