CSS 单行溢出文本显示省略号...的方法(兼容IE FF)(转)

来源:互联网 发布:路由器端口号映射 编辑:程序博客网 时间:2024/05/17 21:35
http://www.52css.com/article.asp?id=602
 
 
 
===================================================
 
 
html代码:
<div>
<p><span>CSS Web Design 我爱CSS-Web标准化 Div+css教程 - www.52css.com</span><p>
</div>

css代码:
div{
width:200px;/*容器的基本定义*/
height:200px;
background-color:#eee;
}

/* IE下的样式 */ 
p span{
display: block;
width:200px;/*对宽度的定义,根据情况修改*/
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;

}

/* FF 下的样式 */ 
p{clear:both;}
p span{
float:left;
max-width:175px;   /*IE不能解释该属性,而FF可以*/
}
p:after{
content:"...";
}

================================================
以下是详细过程,想继续学习的请往下看,不想学的请直接用上面的结果就可以了。
--------------------------------------------------------------
学习篇:

今天有朋友在52css.com的留言板提出一个问题:为什么 text-overflow:ellipsis的时候没有任何效果呀?text-overflow是一个比较特殊的属性,在CSS手册中,这个属性是这样定义的:

  语法: 
  text-overflow : clip | ellipsis 

  参数: 
  clip :  不显示省略标记(...),而是简单的裁切
  (clip这个参数是不常用的!)
  ellipsis :  当对象内文本溢出时显示省略标记(...)

  说明: 
  设置或检索是否使用一个省略标记(...)标示对象内文本的溢出。
  请您注意,text-overflow:ellipsis属性在FF中是没有效果的。

  示例:
  div { text-overflow : clip; } 

  text-overflow是一个比较特殊的样式,我们可以用它代替我们通常所用的标题截取函数,而且这样做对搜索引擎更加友好,如:标题文件有50个汉字,而我们的列表可能只有300px的宽度。如果用标题截取函数,则标题不是完整的,如果我们用CSS样式text-overflow:ellipsis,输出的标题是完整的,只是受容器大小的局限不显示出来罢了。

  关于text-overflow属性如何应用,我们作如下的说明讲解:

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

我们首页建立了一个无序列表UL,里面有几个列表项LI,内部建立了列表链接A。我们的测试主要在LI在进行,请注意观察,看如下的三段代码:
一、仅定义text-overflow:ellipsis; 不能实现省略号效果
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>52CSS</title>
<style type="text/css">
ul {width:300px; margin:50px auto;}
li {width:300px; line-height:25px; text-overflow:ellipsis;}
a {color:#03c; font-size:13px;}
a:hover {color:#000;}
</style>
</head>
<body>
<ul>
<li><a href="http://www.52css.com/%22%3ECSS实战精萃 - Pro CSS Techniques </a>
<li><a href="http://www.52css.com/%22%3ECSS实战:id是狙击枪 class是双刃剑 合则两利分则两败</a>
<li><a href="http://www.52css.com/%22%3ECSS布局实例:CSS标签切换代码实例教程</a>
<li><a href="http://www.52css.com/%22%3EWeb标准:改变您的网页制作思维方式 节省代码及结构与表现分离</a>
<li><a href="http://www.52css.com/">解决IE7以下版本不支持无A状态伪类的几种方法!</a>
<li><a href="http://www.52css.com/%22%3ECSS去除表格td默认间距及制作1px细线表格 </a>
</ul>
</body>
</html>
二、定义text-overflow:ellipsis; white-space:nowrap; 同样不能实现省略号效果。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>52CSS</title>
<style type="text/css">
ul {width:300px; margin:50px auto;}
li {width:300px; line-height:25px;
text-overflow:ellipsis; white-space:nowrap;}
a {color:#03c; font-size:13px;}
a:hover {color:#000;}
</style>
</head>
<body>
<ul>
<li><a href="http://www.52css.com/%22%3ECSS实战精萃 - Pro CSS Techniques </a>
<li><a href="http://www.52css.com/%22%3ECSS实战:id是狙击枪 class是双刃剑 合则两利分则两败</a>
<li><a href="http://www.52css.com/%22%3ECSS布局实例:CSS标签切换代码实例教程</a>
<li><a href="http://www.52css.com/%22%3EWeb标准:改变您的网页制作思维方式 节省代码及结构与表现分离</a>
<li><a href="http://www.52css.com/">解决IE7以下版本不支持无A状态伪类的几种方法!</a>
<li><a href="http://www.52css.com/%22%3ECSS去除表格td默认间距及制作1px细线表格 </a>
</ul>
</body>
</html>
 三、按52css.com的教程,即本文所讲的方法,同时应用: text-overflow:ellipsis; white-space:nowrap; overflow:hidden; 实现了所想要得到的溢出文本显示省略号效果:
不过请注意此方法适用与IE与OP浏览器,FF不适用!
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>52CSS</title>
<style type="text/css">
ul {width:300px; margin:50px auto;}
li {width:300px; line-height:25px; text-overflow:ellipsis; white-space:nowrap; overflow:hidden;}
a {color:#03c; font-size:13px;}
a:hover {color:#000;}
</style>
</head>
<body>
<ul>
<li><a href="http://www.52css.com/%22%3ECSS实战精萃 - Pro CSS Techniques </a>
<li><a href="http://www.52css.com/%22%3ECSS实战:id是狙击枪 class是双刃剑 合则两利分则两败</a>
<li><a href="http://www.52css.com/%22%3ECSS布局实例:CSS标签切换代码实例教程</a>
<li><a href="http://www.52css.com/%22%3EWeb标准:改变您的网页制作思维方式 节省代码及结构与表现分离</a>
<li><a href="http://www.52css.com/">解决IE7以下版本不支持无A状态伪类的几种方法!</a>
<li><a href="http://www.52css.com/%22%3ECSS去除表格td默认间距及制作1px细线表格 </a>
</ul>
</body>
</html>
--------------------------------------------------------------------------------------------------------------------


实际解决问题篇:

(可能还不是很完美,仅供大家参考。)
  单行文本的控制,以前是由程序员完成的,实现截字效果。
  在52css.com以前的文字中,也介绍过,通过CSS也实现这样的效果:
  如何设置列表(li)超出部分显示省略号? 
  http://www.52css.com/article.asp?id=148
  CSS基础:text-overflow:ellipsis溢出文本显示省略号的详细方法
  http://www.52css.com/article.asp?id=602上面所写的学习篇就是以上两个连接的内容
  上面的两种方法是以前介绍给大家的。它们存在着一定的局限,只能对IE起效果,而在FF下时无效的。

  在FF下面,是直接截断文字,不会加上“…”。今天介绍的方法兼容IE FF,看下面的详细介绍:

  为了更符合实际,我用一个div装起要调试的内容,并为这个div定义一个宽度。
  例如:
css代码:
div{width:200px;}

html代码:
<div>
<span>CSS Web Design 我爱CSS-Web标准化 Div+css教程 - www.52css.com</span>
</div>

 在IE中实现是非常简单的,CSS 如下:

Example Source Code [www.52css.com]
span {
display:block;
width:200px;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;

}

  但在FF中用上面的样式是实现不了的,因为text-overflow: ellipsis;是IE中特有的(非CSS标准)。现在在FF下看到的仅仅只是把溢出的内容切除了,说到"溢出切除",这下说到点子上了,在FF中实现就要用到非常规的方法:一个标签作切除内容,再加一个标签作填补省略号用,并且加起来的长度就能超过容器的宽度,本例指的就是DIV的宽度200px,实现的想法就是这样。

    那么继续进一试验,关于切除内容,这个已经基本上解决了,那就来说补省略号,不用JS,用CSS实现的话就要用到伪对象after,伪对象不懂的就要先去温故或百度一下。先从HTML下手,为span标签外再加一层p标签(当然你也可以加其它标签的)

Example Source Code [www.52css.com]
html代码:
<div>
<p><span>CSS Web Design 我爱CSS-Web标准化 Div+css教程 - www.52css.com</span><p>
</div>

  我们再为这个P标签加样式。

Example Source Code [www.52css.com]
CSS:
p:after{
content:"...";
}

  这样还不行,因为省略号是有宽度的,这样省略号就跳到一下行了,下面要做的就是让span 加省略号的宽度不大于容器宽度(准确的说是相等),并且让省略号紧跟内容的内容,下面就是解决上面这些问题的CSS样式:

Example Source Code [www.52css.com]
p{clear:both;}
p span{
float:left;
max-width:175px;

}
p:after{
content:"...";
}

  这里还要补充的一点是关于p span 的宽度用了"max-width"这个属性,IE不能解释该属性,而FF可以,这样就避开了IE对SPAN宽度的重新应用。上面说得有乱,归纳如下:

Example Source Code [www.52css.com]
html代码:
<div>
<p><span>CSS Web Design 我爱CSS-Web标准化 Div+css教程 - www.52css.com</span><p>
</div>

css代码:
div{
width:200px;/*容器的基本定义*/
height:200px;
background-color:#eee;
}

/* IE下的样式 */ 
p span{
display: block;
width:200px;/*对宽度的定义,根据情况修改*/
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;

}

/* FF 下的样式 */ 
p{clear:both;}
p span{
float:left;
max-width:175px;   /*IE不能解释该属性,而FF可以*/
}
p:after{
content:"...";
}
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 淘宝不能照相了怎么办 淘宝手机充值充到空号了怎么办 淘宝店家不退货怎么办 卖家拒绝退货怎么办? 淘宝发大件物流怎么办 快递好几天不动怎么办 微信上没有购物怎么办 天猫客服诈骗怎么办 京东购物受骗怎么办 京东商城诈骗怎么办 安逸花重复扣款怎么办 公司诈骗离职人怎么办 支付宝重复扣款怎么办 微信重复付款怎么办 花呗重复扣款怎么办 淘宝不退款怎么办投诉 淘宝怎么办极速退货 淘宝换货没收到怎么办 淘宝卖货让人换货了怎么办 淘宝换货关闭了怎么办 物流透露客户信息怎么办 淘宝信息泄漏后怎么办 淘宝信息泄漏了怎么办 天猫贷款还不上怎么办 车贷下不来定金怎么办 建行车贷不通过怎么办 天猫介入失败怎么办 天猫投诉没用怎么办 天猫被投诉商标侵权怎么办 虚假发货有天猫红包怎么办 淘宝代购是假货怎么办 闲鱼对方不在怎么办 小米商城退款慢怎么办 小米手机第三方拿货是怎么办 oppo手机卡被锁怎么办 下巴粉刺特别多怎么办 苹果6sp手机卡怎么办 苹果手机无服务怎么办 京东买电脑没发票怎么办 买东西发票丢了怎么办 在天猫上买了假货怎么办