zoukankan      html  css  js  c++  java
  • css居然有根据容器宽度自动截取长度加省略号功能,强大!!

    参考学习:http://www.cnblogs.com/lianjun/archive/2011/03/24/1993479.html

        项目中最初的做法(js截取):

    //字符长度截取包括中英文混合 
    function subStr(str, len) {
        str = str.toString();
        var newLength = 0; 
        var newStr = ""; 
        var chineseRegex = /[^x00-xff]/g; 
        var singleChar = ""; 
        var strLength = str.replace(chineseRegex,"**").length; 
        for(var i = 0;i < strLength;i++) { 
                singleChar = str.charAt(i).toString(); 
                if(singleChar.match(chineseRegex) != null) { 
                        newLength += 2; 
                }else { 
                        newLength++; 
                } 
                if(newLength > len) { 
                        break; 
                } 
                        newStr += singleChar; 
        } 
        if(strLength > len) { 
                newStr += "..."; 
        } 
        return newStr; 
    } 


    但发现无意中发现css居然有根据容器宽度自动截取长度加省略号功能,而且无需再次调用js方法去截取字符串。特别在数据比较多的table中,对每行中的列都要调用js方法,会导致页面加载时间,影响系统性能,导致用户体验不够。但会增加一点服务器流量。可以根据情况衡量使用。 

    语法:

    text-overflowclip |  ellipsis

    取值:

    clip: 
    不显示省略标记(...),而是简单的裁切。
    ellipsis: 
    当对象内文本溢出时显示省略标记(...)

    说明:

    1. 设置或检索是否使用一个省略标记(...)标示对象内文本的溢出。对应的脚本特性为textOverflow。 
    2. text-overflow属性仅是注解,当文本溢出时是否显示省略标记。并不具备其它的样式属性定义。要实现溢出时产生省略号的效果还须定义:强制文本在一行内显示(white-space:nowrap)及溢出内容为隐藏(overflow:hidden),只有这样才能实现溢出文本显示省略号的效果。  

    兼容性:

    text-overflow : clip 

    text-overflow : ellipsis 

              

    关于text-overflow属性如何应用,我们作如下的说明讲解:
           text-overflow:ellipsis;
           overflow:hidden;
           white-space:nowrap;
           width:200px; (标注容器的宽度)

      text-overflow属性仅是注解,当文本溢出时是否显示省略标记。并不具备其它的样式属性定义。我们想要实现溢出时产生省略号的效果。还必须定义:强制文本在一行内显示(white-space:nowrap)及溢出内容为隐藏(overflow:hidden)。只有这样才能实现溢出文本显示省略号的效果。

       

    在Div中的方法

    <DIV STYLE=" 200px; border: 1px dashed red; overflow: hidden; text-overflow:ellipsis">
    <NOBR>就是比如有一行文字,很长,表格内一行显示不下.</NOBR>
    <NOBR>就a是比如有一行文字,很长,表格内一行显示不下.</NOBR>
    <NOBR>就1是比如有一行文字,很长,表格内一行显示不下.</NOBR>
    <NOBR>就F是比如有一行文字,很长,表格内一行显示不下.</NOBR>
    <NOBR>就是 Like You Pig Very Very Very Much.</NOBR>
    </DIV>

    在Table中的方法

    <TABLE style="table-layout:fixed;border-collapse:collapse;font-size:12px;" border="1" width="200" bordercolor=#666666>
    <TR>
    <TD nowrap style="overflow:hidden;text-overflow:ellipsis;">内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容</TD>
    </TR>
    </TABLE>

    示例:

    <!DOCTYPE html>
    <html>
    <head>
    <title>text-overflow demo</title>
    <meta charset=utf-8" />
    <style>
    .test_demo_clip {
        text-overflow:clip; 
        overflow:hidden; 
        white-space:nowrap; 
        width:200px; 
        background:#ccc;
    }
    .test_demo_ellipsis {
        text-overflow:ellipsis; 
        overflow:hidden; 
        white-space:nowrap; 
        width:200px; 
        background:#ccc;
    }
    </style>
    </head>
    <body>
    <h2>text-overflow : clip </h2>
      <div class="test_demo_clip">
      不显示省略标记,而是简单的裁切条
    </div>
    <h2>text-overflow : ellipsis </h2>
    <div class="test_demo_ellipsis">
      当对象内文本溢出时显示省略标记
    </div>
    </body>
    </html>

    演示结果:

  • 相关阅读:
    uva 1391(2-SAT)
    uva 1146(2-SAT+二分判断)
    uva 12167(强连通分支)
    uva 11324(强连通分支+DAG)
    Codeforces Round #227 (Div. 2) 解题报告
    uva 10319(2-SAT)
    uva 610(割边)
    uva 11504(强连通分支)
    测试:网页测试,入门面试题
    测试:安装包的测试
  • 原文地址:https://www.cnblogs.com/zzgno1/p/3987898.html
Copyright © 2011-2022 走看看