`
cyd198633
  • 浏览: 26205 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

关于文字内容溢出用点点点(…)省略号表示

阅读更多
  关于文字内容溢出用点点点(…)省略号表示 收藏
前言:
在实际的项目中,由于文字内容的长度不确定性和页面布局的固定性,难免会出现文字内容超过div(或其他标签,下同)区域的情况,此时比较好的做法就是当文字超过限定的div宽度后自动以省略号(…)显示,这样,按照习惯,人们都会知道这儿有文字被省略了。css中有个属性叫做text-overflow:ellipsis;配合其他一些属性可以实现IE,chrome,safria浏览器下文字溢出点点点省略号显示,在加上opera浏览器的私有属性-o-text-overflow:ellipsis;就目前而言,可以实现Firefox浏览器以外的所有主流浏览器的文字溢出点点点省略号显示。
而本文将提供多种兼容性上佳的文字溢出点点点省略号显示的方法,而里面不少方法就是自己想出来的。有使用外部辅助文件的,有纯粹的css方法的,还有使用jQuery方法的。每种方法都提供各个浏览器下的截图验证,提供实例页面,提供部分源文件,都是值得信赖的方法,希望对您有所帮助。文章中穿插了些牢骚,您可以跳过,与本文主体不是很相关。
您可以事先单击这里:本文各类方法的demo实例页面,两个页面对比或许更有助于理解和认识。
目录:

目录

• 1、常规css方法——使Firefox以外主流浏览器文字溢出省略号表示览器文字溢出省略号表示
• 2、使用ellipsis.xml文件使Firefox支持文字溢出后点点点省略号表示
• 3、我对网上些文章和网站的不满
• 4、我自己想出来的方法——margin负值定位法
• 5、jQuery限制字符字数的方法
• 6、jQuery自动判断宽度是否超出的方法
[显示部分][显示全部]

1、常规css方法——使Firefox以外主流浏览器文字溢出省略号表示览器文字溢出省略号表示编辑本段回目录
下图为此常用方法在各个浏览器下的表现: 
IE6浏览器下 
IE7浏览器下 
chrome谷歌浏览器下 
Safari浏览器下 
opera浏览器下 
Firefox火狐浏览器下 
可以看到,仅在Firefox火狐浏览器下无法实现文字溢出省略号表示,其文字直接从中间咔掉了。综合考虑代码成本,表现效果,我个人觉得这样子已经算是不错的了,追求完美和实际效益之间要追求一定的平衡。如果页面上很多文字都溢出,则需要寻求更兼容的方法,要是偶尔会出现文字溢出的情况,就是用这类css代码就足够了,单层标签,简单实用: 
.zxx_text_overflow{width:27em; white-space:nowrap; text-overflow:ellipsis; -o-text-overflow:ellipsis; overflow:hidden;}

2、使用ellipsis.xml文件使Firefox支持文字溢出后点点点省略号表示编辑本段回目录
这是老外提供的一种方法,使用Firefox的私有属性调用一个XML文件,可以使Firefox火狐浏览器下文字溢出后以省略号的形式显示。
右键另存为下载:ellipsis.xml

xml内容为:


  xmlns="http://www.mozilla.org/xbl"
  xmlns:xbl="http://www.mozilla.org/xbl"
  xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
>
 
   
     
   
 

调用方法如下:-moz-binding:url(‘ellipsis.xml#ellipsis’);跟css样式写法一致。
需要注意的是:此XML文件不支持向上路径的访问,也不支持绝对路径的访问。也就是说此XML文件需要放在调用文件(css文件,或HTML文件)的同目录下或下一级目录下,不能向上访问。原因我是不清楚的,我反复试验,都证明如此。
下图为使用此XML文件后Firefox浏览器下的表现:
Firefox火狐浏览器下
可以清除地看到溢出的文字部分用点点点省略号表示了。再结合上面的css样式,就可以实现所有主流浏览器下的单行文字溢出用省略号表示了。css表示如下:
.zxx_text_overflow{width:27em; white-space:nowrap; text-overflow:ellipsis; -o-text-overflow:ellipsis; -moz-binding:url('ellipsis.xml#ellipsis'); overflow:hidden;}
例如在实例页面中,此段css是写在页面上的,所以ellipsis.xml文件是放在HTML文件同目录下的。

3、我对网上些文章和网站的不满编辑本段回目录
昨天编写demo实例页面,想找之前看过的一个同仁提过的图片显示省略号的方法,结果发现很多打着称号兼容“IE,FF”的文章,不错啊,于是我看看是什么方法。结果一肚子的火。
所谓的兼容IE,FF的文章
图中显示的是Google搜索后的前五项,其中有四个是所谓的建站教程网站,这四个又是同一篇文章。
这篇文章很不负责,居然是我很久之前就想过且测过,由于兼容性等等问题而不采用的方法。用:after伪类和content在文字后面加省略号。这个方法可以说是完全行不通。
首先,标题就是个大大的错误,什么兼容“IE,FF”?第一、chrome不算浏览器吗?看这文章时间,chrome已经出来了,Safari,opera不算浏览器吗?就只要兼容IE,FF就可以了吗?第二、你兼容IE,FF吗?什么叫兼容,就是要表现一样。两个浏览器下表现一致吗?差远了!第三、你兼容IE吗?IE6和IE7下都天差地别的,还说什么兼容呢!
看这文章的意思,这世界上就只有两种浏览器,IE6和Firefox,我不知道作者是个很大的草包还是上世纪时空转移过来的程序员,用句赤壁里的话说就是“你过时了!”
其次,方法缺陷很多:1、说是兼容,其实反而大大破坏了兼容性,IE6和IE7下的表现就不一样,一句IE“不支持max-width”就让我想给作者扇个耳光,IE7不支持吗,别告诉我你写这文章时还没有IE7浏览器。2、本来chrome浏览器,Safari还有opera可以实现文字溢出省略号显示的,现在受限与:after和content,就会一处理不当,文字直接被截,就很丑了。3、多套用了一层标签,css也多了好几行,没有必要,资源消耗高。4、当文字很短时后面也还跟着个省略号,没有溢出为什么还要显示省略号呢?
无论是兼容性,资源占用,逻辑表现都是很屎的,是个完全不能用的方法。
我不是愤慨作者技术不行,而是不满没有一点道义和科研素养。睁着眼睛说瞎话,都是没有经过验证的东西,凭感觉大放厥词。我更鄙视那些所谓的教程网站,这些网站什么教程都拿来的,它只管点击率,不管是否正确实用,n年前淘汰的东西它也拿来,误人子弟啊!我就很纳闷,这些网站无论设计,还是布局,或是页面的兼容性都差的跟坨酝酿很久的猪屎一样,还教别人怎么做网站。我是看穿了,其实这篇文章不行他们是知道的,可以没有办法啊,“兼容IE,FF”,多诱人的关键词啊!不管怎样,得拿篇文章来占住这几个关键词啊!流量给了别人可不行啊!这些唯利是图的网站,将一篇完全不行的文章传来传去,就为了点破点击率。这跟三鹿有什么区别,做教程的,是教人的,随便拿一些错误的东西糊弄人,害了多少人啊,真是太没有道义了!

4、我自己想出来的方法——margin负值定位法编辑本段回目录
这里先上代码,HTML部分:


   
这是一段比较长的文字,用来测试是否文字溢出时会用省略号显示。

   



css部分:
.zxx_text_overflow{width:24em; height:1.3em; overflow:hidden; zoom:1;}
.zxx_text_overflow .text_con{float:left; height:1.3em; margin-right:3em; overflow:hidden;}
.zxx_text_overflow .text_dotted{width:3em; height:1.31em; float:right; margin-top:-1.3em;}
结果在不同浏览器下的表现如下(IE6,IE7以IE6示例,Firefox和chrome以Firefox示例):
IE6下,IE7同类型,表现一致
Firefox浏览器下表现
opera浏览器下表现
Safari浏览器下表现
简要说明:此方法兼容IE6,IE7(IE8未测过),Firefox,chrome,Safari,opera浏览器。没有hack,没有生僻的css样式。文字短时,没有省略号,文字溢出时就出现省略号。可以说是相当不错的一个方法。原理也很简单:当文字内容足够长时就把隐藏在上面的省略号层给挤下来了。关键就是点点点所在div层的高度的绝对值要比其margin的绝对值大那么一点点。 如果您不习惯用em做单位,直接换作px就可以了,效果是一样的。
5、jQuery限制字符字数的方法编辑本段回目录
代码很简单,使用也很方便,如下:
$(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()+’…’);
}
});
});
所产生的结果是:页面中class为“zxx_text_overflow”的标签内部字符的个数将最多显示23个,如果原本字符个数大于23,则会在后面添加点点点省略号(…),如下图所示的:
jQuery限制字符个数实现溢出省略号表示

6、jQuery自动判断宽度是否超出的方法编辑本段回目录
相比较前面一种方法,这个js实现的方法更加智能些(也更占用资源),通过复制节点(就是需要判断是否文字溢出省略号显示的标签层),获取其宽度,再判断其宽度是否大于样式中给定的宽度限值,大于则去掉尾部字符,添加省略号,循环,直到复制的层的宽度小于css给定值。
js代码如下:
//by zhangxinxu
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();
css部分需要给定一个宽度值,例如:.zxx_text_overflow{width:400px;}
结果如下:
jQuery宽度判定实现溢出省略号表示
狠狠地点击这里:本文各类方法的demo实例页面
最后补充:
我抽了一会儿时间把上面两个jQuery的方法结合起来,写了个小小的jQuery插件,方便对jQuery感兴趣的人直接使用了。
这个单行文字溢出用点点点省略号显示的jQuery插件的使用很简单。例如:
$(“.test1″).wordLimit(); 自动获取css宽度进行处理,如果css中未对.test1给定宽度,则不起作用
$(“.test2″).wordLimit(24); 截取字符数,值为大于0的整数,这里表示class为test2的标签内字符数最多24个
$.wordLimit();里面为空则根据宽度自动截取,有值的话就按照字符数进行截取了。


一行内文本超出指定宽度溢出的处理
一般的文字截断(适用于内联与块):
.text-overflow {
display:block;/*内联对象需加*/
width:31em;
word-break:keep-all;/* 不换行 */
white-space:nowrap;/* 不换行 */
overflow:hidden;/* 内容超出宽度时隐藏超出部分的内容 */
text-overflow:ellipsis;/* 当对象内文本溢出时显示省略标记(...) ;需与overflow:hidden;一 起使用。*/
}

对于表格文字溢出的定义:
table{
width:30em;
table-layout:fixed;/* 只有定义了表格的布局算法为fixed,下面td的定义才能起作用。 */
}
td{
width:100%;
word-break:keep-all;/* 不换行 */
white-space:nowrap;/* 不换行 */
overflow:hidden;/* 内容超出宽度时隐藏超出部分的内容 */
text-overflow:ellipsis;/* 当对象内文本溢出时显示省略标记(...) ;需与overflow:hidden;一 起使用。*/
}



分享到:
评论

相关推荐

    jQuery文字溢出显示省略号插件.zip

    "jQuery文字溢出显示省略号插件"就是为了解决这个问题而诞生的。它基于一款名为"dotdotdot.js"的JavaScript插件,旨在帮助开发者优雅地处理文字溢出的情况,使长文本在指定区域内以省略号的形式简洁展示。 jQuery是...

    多行文本溢出显示点点点

    它能帮助我们优雅地处理长文本,使得超出部分用省略号(...)来表示,同时保持页面整洁和美观。以下将详细讲解如何实现这一功能,并探讨其在不同场景下的应用。 首先,我们需要理解CSS(Cascading Style Sheets)在...

    网页文字溢出显示省略号jQuery插件代码

    网页文字溢出显示省略号是一个常见的需求,尤其是在有限的空间内展示大量文本时。jQuery的dotdotdot.js插件提供了一种优雅的解决方案,能够帮助开发者处理这种情况。这个插件适用于单行和多行文本,当内容超出指定...

    css 超出用省略号当标题字符溢出用省略号表示

    CSS中处理标题文本溢出用省略号表示的方法是一项常见的网页设计技巧,主要应用于当列表项、标题等文本内容超出其容器宽度时,为了保持界面的整洁性,将超出部分用省略号(...)来代替。以下是从标题、描述以及部分...

    文字溢出显示省略号小插件

    文件为jquery简单封装方法,需要先引入jquery,调用方法: $(function(){ $('.test').wordLimit(30) })

    兼容火狐的溢出省略号

    可以兼容火狐的溢出变省略号可以兼容火狐的溢出变省略号可以兼容火狐的溢出变省略号可以兼容火狐的溢出变省略号

    网页文字溢出显示省略号jQuery插件代码.zip

    网页文字溢出显示省略号是一种常见的网页设计技巧,它能有效地管理长文本,使得页面在有限的空间内保持整洁和可读性。jQuery插件在这个过程中起到了关键的作用,通过JavaScript的强大功能来实现这一效果。本压缩包...

    文本溢出时显示省略标记

    当设置为 `ellipsis` 时,它会在溢出部分添加一个省略号,以表示内容被截断。但仅设置 `text-overflow` 是不够的,我们还需要配合使用 `overflow` 和 `white-space` 属性。 `overflow` 属性通常用于处理元素的内容...

    CSS实现单行、多行文本溢出显示省略号(…)

    CSS实现单行、多行文本溢出显示省略号(…)示例文档,自行下载查看

    BInyLU#blognews#CSS实现单行、多行文本溢出显示省略号(…)1

    实现方法:效果如图:但是这个属性只支持单行文本的溢出显示省略号,如果我们要实现多行文本溢出显示省略号呢。实现方法:效果如图:适用范围:该方法适用范围广,但文字未

    dotdotdot文字溢出时添加在文字末尾加省略号

    在描述中提到的“文字溢出时,添加在文字末尾加省略号”,这正是dotdotdot库的主要功能。它不仅简单地裁剪文本,还能确保句子的完整性,避免在截断处出现不完整的单词或句子。例如,如果一个句子超过了容器的宽度,...

    jQuery实现控制文字内容溢出用省略号(…)表示的方法

    首先,我们需要明白实现文本溢出用省略号表示的基本原理。这一效果的实现通常是通过CSS样式来完成的,通过设置元素的`text-overflow`、`white-space`和`overflow`属性来控制文本的显示方式。`text-overflow`属性用来...

    js文字超出省略号特效

    在网页设计中,为了美观和用户体验,经常需要对过长的文字进行省略处理,尤其是在有限的空间内展示内容。"js文字超出省略号特效"就是一种利用JavaScript实现文本溢出时添加省略号的技术,它可以帮助我们在不改变HTML...

    bootstrap-ellipsis:为溢出文本添加省略号的快速方法

    引导省略号为溢出文本添加省略号的快速方法版本 1.0.0 这个插件基于 [dobiatowski] ( ) 的这个项目。 请参阅的性能演示。 ####Dependencies: [jQuery] ( ) 如果你想使用工具提示,那么也 [twitter-bootstrap] ( ) #...

    div 溢出隐藏 div文字溢出用点(省略号)代替

    在div布局中内容溢出了容器,超出了容器所限定的宽度应该...很是疑惑,于是搜集整理一番,发现可以让内容超出容器时超出部分显示省略号,这种做法不仅解决了问题,而且很美观,好了,不多说了,有兴趣的朋友可以参考下

    判断文字超过2行添加展开按钮,未超过则不显示,溢出部分显示省略号

    这个过程涉及到一种常见的技术,即判断文字是否超过指定行数,并根据情况添加展开/收起按钮,溢出部分用省略号表示。在本文中,我们将深入探讨如何实现这个功能,特别是针对两行文字的限制。 首先,CSS3提供了一种...

    多行文本溢出显示省略号

    多行文本溢出显示省略号

    CSS实现单行、多行文本溢出显示省略号的实现方法.docx

    在这个例子中,`-webkit-line-clamp: 3`指定了最多显示3行文本,然后用省略号表示后续内容。然而,这个方法不适用于Firefox、Edge等非Webkit浏览器。 为了增加兼容性,可以使用CSS渐变背景技术,配合`line-height`...

Global site tag (gtag.js) - Google Analytics