| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1208 人关注过本帖
标题:用overflow代替left截取指定长度字符串zz
只看楼主 加入收藏
xmuer
Rank: 1
等 级:新手上路
帖 子:236
专家分:0
注 册:2007-5-10
结帖率:100%
收藏
 问题点数:0 回复次数:4 
用overflow代替left截取指定长度字符串zz
为了防止文章标题过长超过容器(td,div)宽度而显示成多行,我们通常要对标题进行处理让其显示在一行,通常使用的方法有两种:

      一种方法是在客户端用CSS设置容器的overflow属性;

      另一种方法则是在服务器端用left函数对标题字符串进行截取。

以下是引用片段:
<style type="text/css">
div{
width:200px;
overflow:hidden;
}
</style>
<div>轻轻松松在页面中插入单选按钮/复选框</div>
<div><% =Left("轻轻松松在页面中插入单选按钮/复选框",11) %></font></div>  


      比较一下它们的优缺点:

      1.处理地点不同

      一个位于客户端,一个位于服务器端。能在客户端的处理的尽量不要在服务器端处理,减轻服务器负担。

      2.处理对象的不同

      CSS是对容器属性进行设置,left是对标题字符串进行处理,哪个更合理?回答这一问题前我们先问下:为什么要对标题长度进行处理?为的就是"让标题长度不超过容器长度"即可!CSS是对容器属性进行设置,当标题长度超出容器长度时就进行处理;而left的做法是对每个标题进行处理,将标题的长度都控制在我们测试得出的长度n范围内[left(title,n)],有一刀切的嫌疑。可见前者更具合理性。

      3.对html处理的简易性

      这一点是最能说服用CSS的理由。有时由于某些原因,我们会在一些标题中加入了html代码,如:<font color="#FF0000">轻轻松松在页面中插入单选按钮/复选框</font>,我们想要的结果应当是让标题不显示为两行,但还要保证仍为红色!这点left做不到,要达到效果我们先得把html去除,然后对余下的字符串进行截取,再添加html,非常的麻烦;而css完全不理会html,真正做到"只对字符串进行处理",非常方便,如:

以下是引用片段:
<style type="text/css">
div{
width:200px;
overflow:hidden;
}
</style>
<div><font color="#FF0000">轻轻松松在页面中插入单选按钮/复选框</font></div>
<div><% =Left("<font color=""#FF0000"">轻轻松松在页面中插入单选按钮/复选框</font>",11) %></font></div>  



      采用left不仅达不到效果,有时还会导致页面显示出错!
收到的鲜花
  • 永夜的极光2007-12-29 07:53 送鲜花  5朵   附言:相当的不错
搜索更多相关主题的帖子: overflow left 字符 长度 代替 
2007-12-29 00:23
xmuer
Rank: 1
等 级:新手上路
帖 子:236
专家分:0
注 册:2007-5-10
收藏
得分:0 
asp判断字符串的长度和截取指定长度字符串的方法
"判断包含双字节字符的字符串长度
Function getStrLen(str)
dim x,y,i
x = len(str)
y = 0
for i = 1 to x
if asc(mid(str,i,1))<0 or asc(mid(str,i,1))>255 then
y = y + 2 "双字节
else
y = y + 1"ascii码字符
end if
next
getStrLen = y
End Function

"从指定(包含双字节字符的)字符串中第一个字符起的指定长度的字符串
"指定的长度为单字节长度,即字节数
Function leftString(str, length)
Dim x, y, i, s
s = str
x = Len(str)
y = 0
If x >= 1 Then
For i = 1 To x
If Asc(Mid(str, i, 1)) < 0 Or Asc(Mid(str, i, 1)) > 255 Then
y = y + 2
Else
y = y + 1
End If

If y >= length Then
s = Left(str, i) "字符串字节数
Exit For
End If
Next
End If
leftString = s
End Function
例如:
getStrLen("双字节字符abc")
leftString("abc双字节字符字符串",10)
2007-12-29 00:25
xmuer
Rank: 1
等 级:新手上路
帖 子:236
专家分:0
注 册:2007-5-10
收藏
得分:0 
得到固定字符位置的函数
得到固定字符位置的函数

<Script language="Javascript" Runat="Server">
/*
=======================================================================================
 本程序段的功能:
 
 给定一个字符串,不管是英文还是中文,还是中英文混合的,只取前面的8个英文字母占位的宽度。
 关于该程序的说明:当最后一个字为中文,并且前面已经取得7位时,就不应该再取这个字了。再
 最后位置补空格; 否则的话,总共就会占9个英文字符的位置了。
 本程序由net_lover(孟子E章)编写,您可以任意使用本程序,但要保持本注释。
 有任何疑问请Email至: [email]amxh@[/email]
 欢迎访问:
 [url]http://lucky.[/url]
 [url]http://colorweb.go.[/url]
=======================================================================================
*/
function get8Length(str)
{
 var tmp = 0;
 var len = 0;
 var okLen = 0
 for(var i=0;i<8;i++)
 {
  if(str.charCodeAt(i)>255)
   tmp += 2
  else
   len += 1
  okLen += 1
  if(tmp + len == 8)
  {
   return (str.substring(0,okLen));
   break;
  }
  if(tmp + len > 8)
  {
   return (str.substring(0,okLen - 1) + "&nbsp;");
   break;
  }
 }
}

</Script>
<%
Dim strTest
strTest = "我是孟子E章啊!!"
Response.write get8Length(strTest) & "……<br>"
strTest = "我是net_lover!!"
Response.write get8Length(strTest) & "……<br>"
strTest = "I我a是m孟子E章啊!!"
Response.write get8Length(strTest) & "……<br>"
%>
2007-12-29 00:30
madpbpl
Rank: 4
等 级:贵宾
威 望:11
帖 子:2876
专家分:244
注 册:2007-4-5
收藏
得分:0 
总结的不错,谢谢分享。
2007-12-29 00:34
enjoy535
Rank: 1
等 级:新手上路
帖 子:114
专家分:3
注 册:2007-1-16
收藏
得分:0 
回复 1# 的帖子
按照益出隐藏的处理方法,如果文字太多,而宽度又有限,我试了一下hidden的方法,却发现文字会显示成多行...

2008-04-09 10:58
快速回复:用overflow代替left截取指定长度字符串zz
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.034641 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved