首页 > 其他分享 >CSS3控制文字只显示一行超出部分显示省略号

CSS3控制文字只显示一行超出部分显示省略号

时间:2023-02-07 10:05:10浏览次数:62  
标签:CSS3 pre 显示 省略 省略号 space text white overflow


在编写网页的时候,我们希望文字不换行,特别是在新闻列表的时候,文字多了就添加省略号,不用程序去判断字符,英文和汉字的字符数量是不对应的,一个汉字占两个英文字符的位置,如果一行出现了英文字符,裁切就不准确了,不过用css可以办到控制文字只显示一行,超出部分显示省略号,如果需要强制换行,看最后

首先来看一个例子:

<p style="width: 300px;overflow: hidden;white-space: nowrap;text-overflow: ellipsis;">
省略我吧! 省略我吧! 省略我吧! 省略我吧! 省略我吧! 省略我吧!
省略我吧! 省略我吧! 省略我吧! 省略我吧! 省略我吧! 省略我吧!
</p>


测试浏览器: IE6/7/8/9、opera12.02、firefox15.0.1、chrome21.0.11



1、text-overflow: ellipsis;



这里的重点样式是 text-overflow: ellipsis;



不过话说text-ellipsis是一个特殊的样式,有关解释是这样的:text-overflow属性仅是注解,当文本溢出时是否显示省略标记。并不具备其它的样式属性定义。



要实现溢出时产生省略号的效果还须定义:强制文本在一行内显示(white-space:nowrap)及溢出内容为隐藏(overflow:hidden),只有这样才能实现溢出文本显示省略号的效果。



简单理解就是我要把文本限制在一行(white-space: nowrap;),肯定这一行是有限制的(width),并且你的溢出的部分要隐藏起来(overflow: hidden;),然后出现省略号( text-overflow: ellipsis)。



我在网上看到有很多人说opera不支持text-overflow,可能因为我用的是最新版本的,已经支持这个属性了,所以没办法测试,不过网上给支持低版本的opera一个办法,就是-o-text-overflow:ellipsis;至于火狐,也有很多人说不支持,版本问题无法考证,大家有试过的可以出来指证一下。



2、white-space



顺便解释一下white-space的用法



white-space属性声明建立布局过程中如何处理元素中空白符。(废话一句,这里的空白符应该指我们用键盘敲入的空格或回车,因为用 或<br>无论white-space设置什么都会有空格或回车。)



下面是wschool上white-space可能的值:



[list]


[*]normal 默认。空白会被浏览器忽略。


[*]pre 空白会被浏览器保留。其行为方式类似 HTML 中的 <pre> 标签。


[*]nowrap 文本不会换行,文本会在在同一行上继续,直到遇到 <br> 标签为止。


[*]pre-wrap 保留空白符序列,但是正常地进行换行。


[*]pre-line 合并空白符序列,但是保留换行符。


[*]inherit 规定应该从父元素继承 white-space 属性的值。


[/list]



css让pre标签强制自动换行



pre 元素可定义预格式化的文本。被包围在 pre 元素中的文本通常会保留空格和换行符。而文本也会呈现为等宽字体。



<pre> 标签的一个常见应用就是用来表示计算机的源代码。对于技术博客经常会用到pre标签输出代码或是代码高亮,而默认情况下,pre 标签中的内容若超出范围不会自动换行。



下面介绍一个方法让 <pre > 标签中的内容自动换行并符合 W3C 标准(多浏览器支持)


pre{
white-space:pre-wrap /*css3.0*/
white-space:-moz-pre-wrap /*Firefox*/
white-space:-pre-wrap /*Opera4-6*/
white-space:-o-pre-wrap /*Opera7*/
word-wrap:break-word /*InternetExplorer5.5+*/
}

标签:CSS3,pre,显示,省略,省略号,space,text,white,overflow
From: https://blog.51cto.com/u_15955464/6041271

相关文章