`
othella
  • 浏览: 83586 次
  • 性别: 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的`overflow`, `text-overflow` 和 `white-space` 属性。首先,设置一个固定宽度的容器,例如300px...

    用css截取字符的几种方法详解(css排版隐藏溢出文本).pdf

    通用的CSS截断字符串的方法是利用`text-overflow`属性,结合`overflow`和`white-space`。如下所示: ```css div.test { width: 200px; height: 14px; overflow: hidden; white-space: nowrap; text-overflow: ...

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

    本文将详细讲解如何使用CSS实现字符串截断并加省略号的示例。 首先,我们要了解CSS中涉及这一功能的关键属性: 1. `width`: 定义元素的宽度。这是实现截断的前提,需要限制元素的宽度使其不足以容纳所有文本。 2. ...

    用css截取字符的几种方法详解(css排版隐藏溢出文本).docx

    本文将详细介绍三种常见的CSS方法来截取字符并隐藏溢出的文本。 1. **使用`overflow`和`text-overflow`属性** 当你希望隐藏超出容器宽度的文本时,可以使用`overflow`属性配合`text-overflow`属性。`overflow`设置...

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

    以下将详细解释如何通过CSS截取字符实现文字的自动截断隐藏溢出文本,以及相关的关键知识点。 ### CSS截取字符实现文字自动截断隐藏溢出文本 为了实现文字的自动截断隐藏溢出,可以采用CSS的`text-overflow`属性。...

    HTML+css 超出字符省略号表示

    这是一段非常非常长的文本,它超过了我们想要显示的字符数限制,所以我们需要用HTML和CSS来实现超出部分用省略号表示。 ``` 接下来,我们需要在CSS中应用样式来实现省略号效果。通常,我们会使用`white-space`、`...

    css截取字符串简单实例

    标题中提到的“css截取字符串”实际上是关于在Web前端开发中如何利用CSS的特性来实现文本截断的效果。在这里,CSS并非传统意义上的编程语言,它不具备直接截取字符串的功能,但它可以通过一些属性来控制文本的显示,...

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

    使用CSS实现文字自动截断用省略号代替 在Web开发中,经常需要对文字进行截断,以便适应不同的屏幕尺寸和布局。传统的方法是使用JavaScript来实现文字截断,但这需要编写复杂的代码并且需要考虑浏览器的兼容性问题。...

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

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

    用css截取字符的几种方法详解(css排版隐藏溢出文本)

    9. 使用CSS截取字符并隐藏溢出文本时,还需注意屏幕阅读器等辅助技术的兼容性,以确保所有用户都能正确获取到内容信息。 通过上述方法,开发者可以根据具体需求和目标浏览器选择合适的CSS技术来实现文本截断。实际...

    css中text-overflow属性与文本截断详解

    对于多行文本的复杂截断需求,可以使用CSS伪元素`:after`来模拟截断效果,通过`linear-gradient`创建渐变背景来模拟省略号。但这通常会导致一些问题,比如在中文环境下表现不稳定。 ### 问题与局限性 尽管`-webkit...

    CSS 控制标题长度,不再需要切字符串函数了 ^_^.txt

    随着CSS的发展,我们可以通过纯CSS的方式来优雅地解决这个问题,无需再使用复杂的字符串处理函数。 #### 一、CSS截断文本的基本原理 在CSS中,可以利用`overflow`属性结合`white-space`和`text-overflow`属性来...

    CSS3截取字符串实例代码【推荐】

    通常,我们使用JavaScript或后端语言来截取字符串,但CSS3也提供了一种方法来实现这一功能。这种方法的优点在于,它可以在不涉及额外脚本的情况下,仅通过样式控制来实现文本的截取。接下来,我们将深入探讨如何使用...

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

    `ellipsis`值会用省略号替代超出的文本,而`&lt;string&gt;`值则允许我们指定一个特定字符串来替代超出的文本,不过这种用法目前仅在Firefox浏览器中得到支持。例如,通过设置`white-space: nowrap; text-overflow: ...

    用css控制字符串的输出长度超出时隐藏

    这时,CSS提供了一种解决方案,即通过结合使用`width`、`white-space: nowrap`、`overflow: hidden`和`text-overflow: ellipsis`等属性来实现字符串的输出长度控制。下面将详细解释这些属性的作用以及如何应用它们。...

    css规范文档

    - CSS文件也使用英文命名,后缀为.css,基础样式使用base.css,首页用index.css,其他页面按模块命名。 - Js文件同样遵循英文命名,后缀为.js,通用脚本为common.js,其他按需命名。 2. **HTML书写规范**: - ...

    js文字截断

    本文将深入探讨JavaScript的文字截断方法,特别是使用"clamp.js"库的技巧。 首先,我们要理解JavaScript的基本文字截断原理。在JavaScript中,可以使用`substring`、`slice`或`substr`等字符串方法来截取字符串的一...

Global site tag (gtag.js) - Google Analytics