截取超出的字符串并添加省略号

用CSS截断字符串

方法一:

<div style="width:300px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;"> 任意长度的字符串 </div>

说明:优点是内容可以为任何HTML元素,包括超链接和图片等,在IE6中还会在结尾自动显示省略号。缺点是必须指定宽度数值,并且宽度不能是百分数,否则在IE中会被认为是字符总长的百分比。

方法二:

<input type=”text” style=”width:100%; cursor:default; border-width:0; border-style:none; background-color:transparent;” value=”任意长度的字符串” readonly/>

说明:优点是宽度可以设为百分数。但缺点是内容只能为纯文本,不能有超链接等内容。

CSS 截断字符串2008-01-08 09:58CSS是实现文字自动截断,代码如下:

div.test{

width:200px;

height:14px;

overflow:hidden;

white-space:nowrap;

text-overflow:ellipsis;

text-overflow: ellipsis;/* IE/Safari */

-ms-text-overflow: ellipsis;

-o-text-overflow: ellipsis;/* Opera */

-moz-binding: url("ellipsis.xml#ellipsis");/*FireFox*/

}

关键是text-overflow,其语法如下:

text-overflow:clip | ellipsis

clip:不显示省略标记(…),而是简单的裁切

ellipsis:当对象向内文本溢出时显示省略标记(…)

要注意的是:这个属性是IE专用的!不过,却非只有IE可用。该标签虽然没有被乖哦公开支持采纳,但却被很多浏览器的私有属性所包含。text-overflow单独使用是不起作用的,必须有white-space:nowrap;overflow:hidden;这两句的配合方可。前一句的作用是强制在同一行内显示所有文本,直到文本结束或者遭遇br对象。

不难看出,用text-overflow的最佳场所不是文章的行文,而是用以单行显示的标题或摘要的列表。

语法:

white-space : normal | pre | nowrap

取值:

normal  : 默认值。默认处理方式。文本自动处理换行。假如抵达容器边界内容会转到下一行

pre  : 换行和其他空白字符都将受到保护。这个值需要IE6+或者 !DOCTYPE 声明为 standards-compliant mode 支持。如果 !DOCTYPE 声明没有指定为 standards-compliant mode ,此属性可以使用,但是不会发生作用。结果等同于 normal 。参阅 pre 对象

nowrap  : 强制在同一行内显示所有文本,直到文本结束或者遭遇 br 对象。参阅 noWrap 属性

说明:

设置或检索对象内空格字符的处理方式。

空格字符,像换行,空格,TAB,在HTML文档中默认的是被忽略的。当此属性设置为 normal 或者 nowrap 时,你可以使用不换行空格的命名实体   来添加空格,用 br 元素来添加换行。此属性对你使用文档对象模型(DOM)操作的内容的影响与其对IE显示内容的影响一样。

此属性作用于块对象。

此属性对于 currentStyle 对象而言是只读的。对于其他对象而言是可读写的。

对应的脚本特性为 whiteSpace 。

方法三:

如果不需要添加省略号,直接固定容器宽度,然后添加一个:overflow:hidden即可。

 

使用js方法截断字符串

JavaScript字符串处理函数,根据定义的长度截取字符串,超出部分裁掉追加……,很多时候网页上显示的内容需要缩成“…”该方法用于处理字符串显示固定长度,超长部分用“…”代替

/**参数说明:
 * 根据长度截取先使用字符串,超长部分追加…
 * str 对象字符串
 * len 目标字节长度
 * 返回值: 处理结果字符串
 */
function cutString(str, len) {
    //length属性读出来的汉字长度为1
    if(str.length*2 <= len) {
        return str;
    }
    var strlen = 0;
    var s = "";
    for(var i = 0;i < str.length; i++) {
        s = s + str.charAt(i);
        if (str.charCodeAt(i) > 128) {
            strlen = strlen + 2;
            if(strlen >= len){
                return s.substring(0,s.length-1) + "…";
            }
        } else {
            strlen = strlen + 1;
            if(strlen >= len){
                return s.substring(0,s.length-2) + "…";
            }
        }
    }
    return s;
}

zhaoan

一个不起眼的IT工作者,从事过的行业较多,医疗保健、医院、月子会所、机电、重卡、软件,涉及的岗位也较多,零售、市场、平面设计、网站设计、UI设计、前端开发、后端开发、网络布线、设备维护、服务器维护、网络推广、网站运营、新媒体运营、部门管理等等,每个岗位工作基本都能独立完成,但是涉及面广导致都不精通,学习还在继续中。。。

You may also like...