用CSS让文字在一行内显示不换行的方法:
一般的文字截断(适用于内联与块):
.text-overflow{
display:block /*内联对象需加*/
width:31em
word-break:keep-all /* 不换行 */
white-space:nowrap /* 不换行 */
overflow:hidden /* 内容超出宽度时隐藏超出部分的内容 */
text-overflow:ellipsis /*溢出时显示省略标记...;需与overflow:hidden一起使用*/
}
对于表格,定义有点不一样:
table{
width:30em
table-layout:fixed /*只有定义了表格的布局算法为fixed,下面td的定义才能起作用*/
}
td{
width:100%
word-break:keep-all /* 不换行 */
white-space:nowrap /* 不换行 */
overflow:hidden /* 内容超出宽度时隐藏超出部分的内容 */
text-overflow:ellipsis /* 溢出时显示省略标记...;需与overflow:hidden一起使用*/
}
注:这个只对单行的文字的效,如果你想把它用在多行上,也只有第一行有作用的。 这个写法只有IE会有"...",其它的浏览器文本超出指定宽度时会隐藏。
层叠样式表(英文全称:Cascading Style Sheets)是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言。CSS不仅可以静态地修饰网页,还可以配合各种脚本语言动态地对网页各元素进行格式化。
CSS 能够对网页中元素位置的排版进行像素级精确控制,支持几乎所有的字体字号样式,拥有对网页对象和模型样式编辑的能力。
分类: 电脑/网络 >>互联网问题描述:
如何用css控制文本自动换行 ?
解析:
默认的就是自动换行
语法:
white-space : normal | pre | nowrap
取值:
normal : 默认值。默认处理方式。文本自动处理换行。假如抵达容器边界内容会转到下一行
pre : 换行和其他空白字符都将受到保护。这个值需要IE6+或者 !DOCTYPE 声明为 standards-pliant mode 支持。如果 !DOCTYPE 声明没有指定为 standards-pliant mode ,此属性可以使用,但是不会发生作用。结果等同于 normal 。
nowrap : 强制在同一行内显示所有文本,直到文本结束或者遭遇 br 对象。
以前看到过这样一个逻辑。
大概意思是这样:给目标元素中,一个字一个字的往里添加,然后计算添加一个字后,元素的高度,然后记录(最初肯定是一行,当高度变化一次,就说明增加了一行,然后把行数就执行加1操作),然后就根据这个计算得到的行数,就可以判断,在什么时间,把字符串截断,显示为省略号了。。。
能理解这个逻辑不?那就试试用代码写出来吧。
好像是有点麻烦。。。。
<body><div id='view' style='width:200pxheight:70pxoverflow:auto'></div>
<script>
s = '条件:<br>\
div css javascript html<br>\
如何实现多行文本中最后一行文本最后自动显示省略号(如三行文本,文本自动换行后,第三行很长,自动显示省略号)'
el = document.getElementById('view')
n = el.offsetHeight
for(i=10 i<s.length i++) {
el.innerHTML = s.substr(0, i)
if(n <= el.scrollHeight) break
}
el.style.overflow = 'hidden'
el.innerHTML = s.substr(0, i-3) + '...'
</script>
</body>
我给你一个建议吧,直接overflow:hidden,然后在最后,覆盖一张...的透明PNG的图片,不过最后显示的一个文字有可能被遮盖住,漏点出来
又或者你放弃多行加省略号的想法,这样什么事情都好解决了