把字符串放到规定的范围内,超出的部分自动变为...完美解决

解决|字符串

ylog.net主页里有最新日记和最新评论两项,日记的标题和评论的内容经常超出长度而自动换行,只能用难看两字形容,这让我头痛不已...
首先想到的是截取一段,于是写了这个函数
这种操作用js,在客户端执行可以缓解服务器负担,而且js在操作字符串时有速度优势

<script>
CatString(str,len)
{
if (str.length>len)
str=str.substring(0,len-3,str)+"...";
document.write (str)
}
</script>

结果可想而知,因为英文和中文的打印长度不同,得到的结果是长短不齐,显然不是我要的效果

既然中文的宽度大约为两倍的英文宽度,那就把中文当成两个英文字符了,然后再截取出来,再还原#@$#@%$#!$#
代码我就不贴了,N长而且复杂,最要命的是在普通字体里英文字符的宽度并不全相同象M与f就相差甚远
郁闷半天,翻看CSS2.0手册里布局部分,发现有个属性叫overflow,原文如下

overflow : visible | auto | hidden | scroll

参数:

visible :  不剪切内容也不添加滚动条。假如显式声明此默认值,对象将被剪切为包含对象的window或frame的大小。并且clip属性设置将失效
auto :  此为body对象和textarea的默认值。在需要时剪切内容并添加滚动条
hidden :  不显示超过对象尺寸的内容
scroll :  总是显示滚动条

说明:

检索或设置当对象的内容超过其指定高度及宽度时如何管理内容。
设置textarea对象为hidden值将隐藏其滚动条。
对于table来说,假如table-layout属性设置为fixed,则td对象支持带有默认值为hidden的overflow属性。如果设为hidden,scroll或者auto,那么超出td尺寸的内容将被剪切。如果设为visible,将导致额外的文本溢出到右边或左边(视direction属性设置而定)的单元格。
自IE5开始,此属性在MAC平台上可用。
对应的脚本特性为overflow。请参阅我编写的其他书目。

还有一个属性就是text-overflow这属性设为ellipsis时,会自动加省略号, 但只IE6支持
看来问题解决了,根据上面的属性很容易就能写出下面的代码....
大家可以拷贝到记事本里保存成htm文件测试....

<span style="width:160px;height:15px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap">测试字符串
的所处位置没测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试长度宽度</span>

再加一个title当鼠标移上去时把全文显示出来就prefect了,示例见www.ylog.net的首页
CSS2.0中文手册可以在此下载http://www.ylog.net/download.asp?cat_id=7

时间: 2024-09-20 00:09:52

把字符串放到规定的范围内,超出的部分自动变为...完美解决的相关文章

把字符串放到规定的范围内,超出的部分自动变为&amp;quot;...&amp;quot;完美解决

ylog.net主页里有最新日记和最新评论两项,日记的标题和评论的内容经常超出长度而自动换行,只能用难看两字形容,这让我头痛不已...首先想到的是截取一段,于是写了这个函数这种操作用js,在客户端执行可以缓解服务器负担,而且js在操作字符串时有速度优势<script>CatString(str,len){ if (str.length>len) str=str.substring(0,len-3,str)+"..."; document.write (str)}<

extjs中用DWR调用java返回字符串放到panel的html中,求思路,谢谢

问题描述 如题 解决方案 解决方案二:哪进行不下去!还要求思路!java返回字符串不会DWR获取不到返回的字符串不会extJs用返回的字符串放到panel的HTML中不会

如何计算一段字符串放到excel自动换行的单元格里会有几行

问题描述 一段字符串放到excel单元格里,这个单元格设置为自动换行,那么C#如何得到这段字符串在单元格里会有几行?多谢! 解决方案 解决方案二:需要知道:字符串的长度单元格的宽度字体的大小字间距不是默认的话也需要知道

别的电脑上的ISE工程放到本电脑上后使用ModelSim仿真时出错的解决办法

http://blog.csdn.net/jbb0523/article/details/8038023 题目:别的电脑上的ISE工程放到本电脑上后使用ModelSim仿真时出错的解决办法 是否有这样的经历:别人的ISE工程传给你,然后你打开修改后使用ModelSim仿真时会报错,无奈之下只能重新编译一下库,即点击芯片型号,然后执行Compile HDL Simulation Libraries命令,如图所示: 编译一次库要花很长时间的,但我们知道,电脑上安装ISE和ModelSim后第一次使用

用css来实现标题内容超出长度范围自动省略,且有鼠标提示

很多时候,我们希望一些文字(比如网站首页新闻块的标题),在一行内显示,并且超出它的长度范围时,则加...省略,并且出现提示. 解决办法: 先看示例,,其中表格内左右两块内容完全相同.超出长度的自动省略了,并有提示.注意第二行,在左边,由于容器宽度不够,它是省略有提示的,在右边,由于宽度够,则它是普通模式.你还可以调整IE的"查看 >文字大小",调成不同的字大小看一看,刷新后再调几下. 这里是相关示例代码,你可以修改后运行:<style>#leftnewstd .ell

css实现li中文本超出行宽自动隐藏

li中的文本超出行宽自动隐藏,在一些新闻类的列表应用中还是比较实用的,具体的实现css样式如下,感兴趣的朋友可以参考下,希望对大家有所帮助     复制代码 代码如下: .aa{white-space:nowrap; text-overflow:ellipsis; overflow: hidden; }

jsoup解析html某段字符串获取不了,应该是转义问题,但不知道如何解决,求帮助

问题描述 jsoup解析html某段字符串获取不了,应该是转义问题,但不知道如何解决,求帮助 http://pan.baidu.com/wap/share/home?uk=3306425232&third=0 这是我用jsoup解析的一个url地址,解析其中一段class为该页面信息: 控制台输出如下 <div class="pages complete-pages" xmlns="http://www.w3.org/1999/xhtml"> &

字符串匹配 数据匹配-通过算法大数据循环两两比较字符串,因为循环次数过多而导致程序过慢,如何解决?求救。。。

问题描述 通过算法大数据循环两两比较字符串,因为循环次数过多而导致程序过慢,如何解决?求救... 数据库有十万条数据,比较的规则是,第一条和第二条后面的所有数据进行比较,第二条和后第三条后面的所有数据进行比较,以此类推...比较所有的数据,所比较的数据是根据所选择的几个列的数据进行相应列的对比.这个过程非常慢,据说用哈希可以提高速度,但是针对我们这样的数据结构不知道如何构造哈希表,有没有大神知道怎么样解决这个问题,小弟在这里请教....这个问题困扰了我很久都不能解决,求解决方案? 我们是在程序端

java的action里字符串中含有一个“=”,传到前台后,变为“\u003d”

问题描述 java的action里字符串中含有一个"=",传到前台后,变为"u003d",为什么会变成这样的字符呢? 问题补充:7454103 写道 解决方案 前台?<html> <head> <title>My JSP 'test.jsp' starting page</title> <script language="javascript"> var str="u003d&