我有一个div
包含S
任意长度但大小固定的文本(长度字符串)。超过一定长度(我们称之为L
),文本被截断,文本的其余部分不再可见。(从技术上讲,范围[0,L)
是可见的,范围[L,S)
是不可见的)。
我想要做的是通过L
仅计算. div
任何超出分界点的字符都应该被忽略。
如果可以完成工作,我很乐意使用 jQuery 等第三方库!
我有一个div
包含S
任意长度但大小固定的文本(长度字符串)。超过一定长度(我们称之为L
),文本被截断,文本的其余部分不再可见。(从技术上讲,范围[0,L)
是可见的,范围[L,S)
是不可见的)。
我想要做的是通过L
仅计算. div
任何超出分界点的字符都应该被忽略。
如果可以完成工作,我很乐意使用 jQuery 等第三方库!
这是我为修剪文本所做的一个功能:
function getTextThatFits(txt, w, fSize, fName, fWeight) {
if (fWeight === undefined)
fWeight = "normal";
var auxDiv = $("<div>").addClass("auxdiv").css ({
fontFamily : fName,
fontSize : parseInt(fSize) + "px",
position: "absolute",
height: "auto",
marginLeft : "-1000px",
marginTop : "-1000px",
fontWeight: fWeight,
width: "auto"
})
.appendTo($("body"))
.html(txt);
var ww = (auxDiv.width() + 1);
var str = txt;
if (ww > w)
{
var i = 1, p = 1, u = txt.length, sol = 0;
while (p <= u)
{
i = (p + u) >> 1;
str = txt.slice(0, i);
auxDiv.html(str);
ww = (auxDiv.width() + 1);
if (ww <= w) {
sol = i;
p = i + 1;
}
else u = i - 1;
}
str = txt.slice(0, sol);
}
$(".auxdiv").remove();
auxDiv.remove();
return str.length;
}
我正在使用二进制搜索来查找适合特定宽度的文本。为了使用该函数,您必须像这样调用它:
getTextThatFits(yourText, divWidth, fontSize, fontName, fontWeight=optional)