css text-overflow防止文本溢出

转载请注明原地址:http://blog.csdn.net/chenhualeguan/article/details/49894677

1、text-overflow语法:
text-overflow : clip | ellipsis | ellipsis-word

text-overflow参数值和解释:
clip :  不显示省略标记(...),而是简单的裁切
ellipsis :  当对象内文本溢出时显示省略标记(...)

ellipsis-word :  当对象内文本溢出时显示省略标记(...)(word)

white-space:nowrap;/*禁止换行,为text-overflow作准备*/
overflow:hidden; /*禁止文本溢出显示,为text-overflow作准备*/

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


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


兼容性:




2、white-space的用法

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

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

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

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

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

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

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

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


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<HTML>
 <HEAD>
  <TITLE>text-overflow防止文本溢出</TITLE>
  <meta http-equiv="content-type" content="text/html;charset=utf-8">
  <META NAME="Generator" CONTENT="EditPlus">
  <META NAME="Author" CONTENT="">
  <META NAME="Keywords" CONTENT="">
  <META NAME="Description" CONTENT="">
 </HEAD>
<style type="text/css">
body{background:#fff;    word-break:break-all;
  word-wrap:break-word;  font-size:12px; font-family: Arial,"宋体",Verdana; line-height:150%; margin:0px; paliing:0px; color:#404040; }
input{ font-family:Arial;}
div{margin:0; paliing:0;}
h1,h2,h3,h4,h5,h6,ul,li,dl,dt,li,form,img,p{margin:0; padding:0; border:none; list-style-type:none;}
.con_box{
margin:10px;
width:240px;
border:solid 1px #ccc;


}
h3{
padding:0 8px;
line-height:30px;
text-align:left;
font-size:13px;
border-bottom:1px solid #efefef;
}
ul{padding:5px 0;}
li{
font-size:0.78em;
height:1.5em;
width:224px;
padding:2px 8px;
margin:2px 0;

white-space:nowrap;/*禁止换行,为text-overflow作准备*/
overflow:hidden; /*禁止文本溢出显示,为text-overflow作准备*/
text-overflow:ellipsis;/*兼容 ie Safari (Webkit)*/
-o-text-overflow:ellipsis;/*兼容 Opera*/
-moz-binding:url('ellipsis.html#ellipsis');/*兼容 Firefox*/

}


ul li:before {
content: "";
display: inline-block;
width: 3px;
height: 3px;
vertical-align: middle;
margin-right: 7px;
margin-top: -3px;
background: #cbcbcb;
zoom: 1;
}


</style>
 <BODY>
  <div class="con_box">
<h3>体育新闻</h3>
<ul>
<li>皇马打巴萨计划曝光!贝帅5大杀招誓破巴萨</li>
<li>逗妹吐槽:托蒂邓肯未来是谁的? 火箭改名过山车</li>
<li>曼联食堂趣事:狡猾的弗格森 鲁尼两遭恶搞(图)</li>
<li>C罗母队宣布永久封存C罗7号战袍(图)</li>
<li>惊!西媒曝切尔西清洗4巨星 1月豪购6400万级锋霸</li>
</ul>
  </div>
 </BODY>
</HTML>
`text-overflow` 是 CSS 属性,用于控制当文本溢出容器时如何处理。`text-overflow` 可以设为 `ellipsis`,表示用省略号来代替溢出文本。 `str-slice` 是一个 JavaScript 函数,用于截取字符串的一部分。它的语法如下: ``` str.slice(startIndex[, endIndex]) ``` 其中 `startIndex` 表示开始截取的位置,`endIndex` 表示截取结束的位置(不包括该位置的字符)。如果省略 `endIndex`,则将截取到字符串末尾。 将它们结合起来可以实现当文本溢出时,用省略号来代替溢出的部分。具体实现方法如下: 1. 首先给容器设置一个固定宽度和 `overflow: hidden` 属性,表示当文本溢出时隐藏溢出部分。 2. 在容器内部嵌套一个块级元素,用来显示文本。给这个元素设置 `white-space: nowrap` 属性,表示文本不换行。 3. 使用 JavaScript 获取文本块元素的实际宽度和文本内容的实际宽度,如果文本内容宽度大于文本块元素宽度,则进行截取并在结尾加上省略号。 示例代码如下: HTML 代码: ``` <div class="container"> <div class="text">这是一段很长很长的文本,可能会溢出容器。</div> </div> ``` CSS 代码: ``` .container { width: 200px; overflow: hidden; } .text { white-space: nowrap; } ``` JavaScript 代码: ``` const container = document.querySelector('.container'); const text = document.querySelector('.text'); const textWidth = text.offsetWidth; const containerWidth = container.offsetWidth; if (textWidth > containerWidth) { const slicedText = text.textContent.slice(0, Math.floor(containerWidth / textWidth * text.textContent.length)) + '...'; text.textContent = slicedText; } ``` 这样就可以在文本溢出时使用省略号来代替溢出的部分了。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值