你可以使用text-overflow
(见这里)
div.cutMyText
{
text-overflow:clip;
}
如果文本太长,像这样的插件会自动将文本结尾更改为省略号,
或者
你可以创建一个函数来做同样的事情。这是一个例子。您可以删除+ '...'
javascript 的第 64 行以截断文本
var txt = $(".cut").html();
trimText();
$(window).bind('resize', function(){
trimText();
})
function trimText(){
var totalWidth = $(window).width();
var linkWidth = $(".link").width();
var textWidth = totalWidth - linkWidth - 20;
var trimmedText = getTextThatFits(txt, textWidth, "Times New Roman", 12);
$(".cut").html(trimmedText);
}
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;
auxDiv.html(" ...");
var w2 = (auxDiv.width() + 1) + "px";
if (w2 > w){
auxDiv.remove();
return "";
}
if (ww > w)
{
var i = 1;
var p, u;
var sol = 0;
p = 1; u = txt.length;
while (p <= u)
{
i = (p + u) >> 1;
str = txt.slice(0, i);
str += "...";
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;
}
编辑 这是基于您添加的 jsFiddle 和请求的更新 Fiddle ,如果您希望它剪切而不是使用省略号,请查看此处。两者都考虑到text-transform
属性
更新的 jQuery:
var trans = $('.Liclass.cut').css('text-transform');
var txt;
if( $('.Liclass.cut').css('text-transform') === 'uppercase')
txt = $(".cut").html().toUpperCase();
else { txt = $(".cut").html(); }
trimText();
$(window).bind('resize', function () {
trimText();
});
function trimText() {
var totalWidth = $(this).width();
var trimmedText = getTextThatFits(txt, totalWidth - 20, "Times New Roman", 12, trans);
alert(trimmedText);
$(".cut").html(trimmedText);
}
function getTextThatFits(txt, w, fSize, fName, fWeight, txtTrans) {
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,
textTransform: txtTrans,
width: "auto"
})
.appendTo($("body"))
.html(txt);
var ww = (auxDiv.width() + 1);
var str = txt;
if (ww > w) {
var i = 1;
var p, u;
var sol = 0;
p = 1;
u = txt.length;
while (p <= u) {
i = (p + u) >> 1;
str = txt.slice(0, i);
str;
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;
}
编辑 2
我在评论中将您的小提琴更新为您想要的。float:left;
实际上,我所做的唯一更改是从s中取出s 并将andli
添加到s CSS。使用此获取更多信息white-space:nowrap;
display:block;
ul
在旁注中,我不确定为什么您有这些类型的 ID?对于 CSS,您可以只添加div
或li
代替添加类或 ID,例如#div