[英]How can I replace part of a string which is wider than 50 px with “…”?
我正在尋找一個函數,用"..."
替換寬度超過50px的字符串的一部分。 我想在Javascript / jQuery中實現它。
例:
var="Theta Saving Non-Qualified Plan";
我想對字符串的長度施加限制(基於像素寬度)。 如果字符串的長度大於50px,則字符串中從第51個像素到字符串末尾的部分將替換為"..."
。 伙計們好嗎?
不要試圖重新發明輪子。 使用這樣的Jquery插件: http : //tpgblog.com/2009/12/21/threedots-the-jquery-ellipsis-plugin/
如果您想截斷視覺效果並且不需要截斷實際字符串,這是一個解決方案:
<p>
<span style='width: 50px; height: 1em;
overflow: hidden; display: inline-block'>
This is the long string which should appear truncated followed by elipses
</span>
<span>...</span>
</p>
為了使它在IE6和7中工作,我認為你需要添加以下CSS:
zoom: 1
*display: inline;
這不能像你希望的那樣容易推斷。 因為字符或字符集的寬度取決於字體大小。 並且計算文本寬度幾乎不准確 。
因此,您可以更好地創建界面,使其與字符而不是寬度保持友好。
var t = $("#div").text();
if(t.length > 50) {
$("#div").text(t.substr(0,50)+"...");
}
我會將字符串拆分成一個數組,然后在字母后面添加字母測試元素的寬度,以確定它是否低於50px
即:
var vElement = $('.your_element');
var vStr = vElement.html();
var vShortStr = "";
var vArray = vStr.split("");
for (var i=0; i<vArray.length; i++){
vShortStr += vArray[i];
vElement.html(vShortStr);
if(vElement.width() > 50){
vShortStr = vShortStr.substring(0, vShortStr.length-1);
vShortStr += "...";
vElement.html(vShortStr);
break;
}
}
如果您的文本已經包含在寬度為50px的塊元素中,則可以使用文本溢出 CSS規則,幾乎所有瀏覽器都廣泛支持該規則。 另請參閱quirksmode上的文本溢出 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.