`
othella
  • 浏览: 82320 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
社区版块
存档分类
最新评论

用CSS做字符截断

阅读更多
CSS类定义:
.ellipsis {
	overflow: hidden;
	white-space: nowrap;
	text-overflow: ellipsis;/* IE/Safari */
	-ms-text-overflow: ellipsis;
	-o-text-overflow: ellipsis;/* Opera */
	-moz-binding: url("ellipsis.xml#ellipsis");/*FireFox*/
}

注:需要在该css文件同目录下放入ellipsis.xml文件

在需要做截断的元素上设置好宽度。最简单的运用:

<a class="ellipsis" style="width:200px" href="#">Test Test Test Test Test Test Test</a>


对于有些UI上的设计一般在需要做截断的元素后面还有跟一些其他的元素在同一行显示。比如显示名字后面紧跟着性别或者小图标 XXXXXXXXXX...|yy 类似这样的效果。

需要在父节点上设置宽度,但是ellipsis一定要放在要做截断的元素上

<div style="width:200px; border: 1px solid green;"><span class="ellipsis" style="float: left;border-right: 1px solid #ccc; margin-right: 4px; padding-right: 5px;" href="#">Othella Othella Othella Othella</span><span style="">female</span>
</div>

注意这里需要设置float:left是因为如果名字短的时候,不设置float的话后面的female还是显示在第二行,就是说即使名字短的时候,不知道什么原因还是占位了(在FF下试的).

特别要注意的是在Firefox下用了ellipsis.xml做了截断效果之后这个元素就相当于是图片了,无法选中里面的字,也不能在里面加元素做高亮之类的。

后续:
后面使用发现在IE下用这种方式实现XXXXX...|yy这种效果是实现不了的。因为在IE下要被做截断的元素一定要设置width才行。无奈后来只能用js去实现这个效果了。

FF下还是上面这个方式。对于其他浏览器,需要用js来实现:
fnAutoWidth = function(elements) {
	var $span = $("<span style=\"white-space:nowrap;position:absolute;top:-9999px;font-size:12px;\"></span>").appendTo($("body"));
	
	$(elements).each(function() {
		var $elem = $(this),
			realWidth;
		$span.text($elem.text());
		realWidth = $span[0].offsetWidth;
		if (realWidth < $elem.width()) {
			$elem.css("width", realWidth + "px");
		}
	});
	$span.remove();
};

采用一个辅助的span元素来获取字符所占的真实宽度。如果长度小于该元素设置的width,就把元素的width设置为realWidth。如果是超过设置的width的,那就让其完全elipsis的效果。

这里需要注意的是辅助的这个span元素需要设置成nowrap,而且font-size需要和被截断元素上的保持一致,要不然算realWidth时候会不准。
分享到:
评论
2 楼 othella 2011-09-20  
qq38450529 写道
请教:ellipsis.xml里面是什么内容?

<?xml version="1.0"?>
<bindings
  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">
<binding id="ellipsis">
<content>
<xul:window>
<xul:description crop="end" xbl:inherits="value=xbl:text"><children/></xul:description>
</xul:window>
</content>
</binding>
</bindings>
1 楼 qq38450529 2011-08-04  
请教:ellipsis.xml里面是什么内容?

相关推荐

    用CSS截断字符串的两种实用方法

    CSS截断字符串在一些文字过长需要截取时还是比较实用的,其实实现方法有很多,下面为大家详细介绍几种比较实用的技巧,感兴趣的朋友可以参考下,希望对大家有所帮助

    css实现字符串截断并加省略号示例

    主要介绍了css实现字符串截断并加省略号示例,需要的朋友可以参考下

    用css截取字符实现文字自动截断隐藏溢出文本

    主要介绍了用css截取字符实现文字自动截断隐藏溢出文本,需要的朋友可以参考下

    纯CSS实现“文本溢出截断省略”的几种方法

    一般来说,在做这样文字截断效果时我们更多是希望: 兼容性好,对各大主流浏览器有好的支持 响应式截断,根据不同宽度做出调整 文本超出范围才显示省略号,否则不显示省略号 省略号位置显示刚好 基于上述的准则,...

    使用CSS不用程序实现文字自动截断 用省略号代替

    使用CSS不用程序实现文字自动截断 用省略号代替

    jquery 截取长文本和css

    方法一:用CSS截断字符串:IE,FireFox,Opera ,Safari都兼容 .subLongText{ width:150px; height:24px; overflow:hidden; white-space:nowrap; text-overflow:ellipsis; text-overflow: ellipsis;/* IE/Safari */ ...

    php,js,css字符串截取的办法集锦

    mb_strimwidth — 获取按指定宽度截断的字符串 string mb_strimwidth ( string $str , int $start , int $width [, string $trimmarker = “” [, string $encoding = mb_internal_encoding() ]] )  参数说明:

    truncate.js:一个用于HTML截断和切换的jQuery插件

    CSS3属性“ text-overflow”只能截断一行文本,而IE7和更低版本不支持。特征HTML截断为指定的行数,包括环绕其他浮动元素HTML。 深度HTML截断并保留所有非type3(文本)节点截断后缀的可选规范,例如… 使用可配置...

    js实现连续英文字符自动换行兼容ie6 ie7和firefox

    代码如下: irefox中连续英文字符如果要CSS控制强制换行,探索了N久,发现是实现不了的逼不得已的时候就用js脚本进行控制吧 英文字符自动换行,通过js脚本截断字符串,此方法通用ie6,ie7,firefox兼容解决办法 &lt;...

    CSS的Word_break、Word_Wrap的区别及应用

    在div中,文本布局经常出现,换行混乱的情况。 问题表现:1.如果是全英文字符串,中间不包含任何符号... break-word:内容将在边界内换行(不截断英文单词换行,截断英文单词下面的属性才具备这个功能。) word-break:no

    css文本换行属性word-wrap和white-space使用总结

    word-break:break-all和word-wrap:break-word表示强制换行,前者若英文字符过长自动截断,后者整个英文单词会换行! 而而我常会这样用: 复制代码代码如下: word-wrap:break-word; overflow:hidden; IE 下没有...

    《WordPress 宝典》[PDF]

    不过,由于使用的编码原因,中文字符截断时会出现乱码。不过桑葚网友制作的中文 WordPress 工具箱插件可以解决这个问题。  WordPress 可以说是世界上目前最先进的 weblog 程序。目前开发的程序大多都是根据它仿造的...

    HTML长文本截取含有HTML代码同样适用的两种方法

    方法一:用CSS截断字符串:IE,FireFox,Opera ,Safari都兼容 代码如下: .subLongText{ width:150px; height:24px; overflow:hidden; white-space:nowrap; text-overflow:ellipsis; text-overflow: ellipsis;/* IE/...

    php学习笔记

    用字符串做下标 40 二.使用小数作为key将,自动截断小数部分 40 四.删除数组元素 40 六.二维数组。 40 类 41 一.重载 41 二.覆盖 41 三.抽象类 41 四.final 42 五.const 42 时间 42 一.输出日期 42 错误...

    《程序天下:JavaScript实例自学手册》光盘源码

    9.1 用table做的镜框 9.2 全自动单元格 9.2 突出的表格 9.3 让表格有提示信息 9.4 闪亮的表格边框 9.5 表格的宽度固定后内容自动换行 9.6 表格的排序 9.7 表格的斜线 9.8 table中的文字滚动 9.9 JavaScript遍历table...

Global site tag (gtag.js) - Google Analytics