如何顯示固定寬度的 Label, 超過會顯示 ...

我們在套版的時候,常常會遇到那種「文字寬度固定」的版型,我們通常的作法都是用 Substring 將長篇的文字擷取一部份起來顯示,但問題是「中文字的寬度常常無法估計」,但客戶又要求寬度一定要跟設計師設計的一模一樣,文字太多的時候不能超出版面,以免破壞美美的版面。

請看這段文字:

這是一段非常長的文字這是一段非常長的文字這是一段非常長的文字這是一段非常長的文字

如果客戶要求我們顯示文字的寬度不得超過 300px 怎麼辦呢?!如果你用 Substring 常常不是「長一點」就是「短一點」,尤其是中、英混雜的文字更是如此!

請再看這段文字:

這是一段非常長的文字這是一段非常長的文字這是一段非常長的文字這是一段非常長的文字

看出哪裡不一樣了嗎? 沒錯,我們限定了固定的寬度,且最後面還會幫我們加上 "..." 符號(此效果只在 IE 有效

其實我們可以透過簡單的 CSS 定義就可以達到這個維持版面配置的要求,而完全不需要使用 Substring,底下是上面那個範例的 CSS 定義,標注紅色的部分就是設定的重點:

<style>
.box2 {
    margin: 0 20px;
    text-overflow: ellipsis;
    overflow:hidden;

    white-space:nowrap;
    border: 1px dashed #333;
    width: 300px;
    padding: 10px;
}
</style>

相關連結

另外補充一點,在寫 .NET 的時候愛用 String.Substring() 方法的人請注意,如果你在方法中使用以下程式碼的話很容易就會發生Exception:

[code:c#]

return strResult.Substring(0, 200);

[/code]

因為當 strResult 字串的長度不足 200 字元的時候就會發生 Exception 喔!這點是許多初學者都會犯錯的地方!建議改成以下的形式:

[code:c#]

if(strResult.Length > 200)
   return strResult.Substring(0, 200);
else
   return strResult;

[/code]

 

  

此文章由 will 發表於 2008/3/5 上午 12:07:00

永久連結 | 評論 (3) | 此文章的RSSRSS comment feed |

分類: C# | CSS | Tips | Web

標籤: , ,

收藏:

相關文章

評論

三月 3. 2009 14:29

周小妍

我在網路上找到可以支援FF的
不過FF跑起來字會被切掉就是了
<style>
#box {width:200px;border:0px;}
#box span {display:block;overflow:hidden;float:left;width:156px;width:180px;/*for IE*/white-space:nowrap;text-overflow:ellipsis;/*just for IE */}
#box:after {/*for FF*/content:"...";}
</style>
<div id="box"><span class="text">這是一段非常長的文字這是一段非常長的文字這是一段非常長的文字這是一段非常長的文字 </span></div>

周小妍 tw

四月 21. 2009 21:26

will

我剛寫了一篇文章說明如何在 Firefox 中也正確顯示 ... 的效果:
blog.miniasp.com/.../...or-Firefox-via-jQuery.aspx

will tw

五月 24. 2009 00:14

WM

如果我沒記錯的話,
white-space:nowrap;
也是必須的重點之一。

WM tw

新增評論


(將顯示您的Gravatar圖示)  

  Country flag

[b][/b] - [i][/i] - [u][/u]- [quote][/quote]



線上預覽

七月 4. 2009 21:01