我有一个非常有问题的任务,我想在我的div中计算最宽词的width
,所以我可以用javascript设置min-width
一个可调整大小的div。
我尝试了一些事情,我设法得到了最长的词,不幸的是不是最宽的,我也没能得到他的宽度。
小提琴:https://jsfiddle.net/Lindow/oayddb8w/3/
JavaScript:
function longestWord(string) {
var str = string.split(" ");
var longest = 0;
var word = null;
for (var i = 0; i < str.length; i++) {
if (longest < str[i].length) {
longest = str[i].length;
word = str[i];
}
}
return word;
}
var test = document.getElementById("Test");
var longest_word = longestWord(test.innerHTML); // test.innerHTML == 'dofkdspakdasdsakd,'
var width = (longest_word.clientWidth + 1) + "px"; // 'NaNpx'
alert(longest_word);
HTML:
<div id="Test">
abcdefghijklmn, opqrstuvwxyzAB
ddoafkpdsfk,
dsapdlasèd. CDEFGHIJKLMNO,
dofkdspakdasdsakd, PQRSTUVWXYZ
</div>
有什么建议吗?这里的问题不是获取所有单词的宽度,而只是一堆文本中最宽的单词,这会改变问题。
更新:
这篇文章帮助我:Find the width of the widest word in the html block
我必须将每个单词放在<span>
标记中,并根据它们的fontFamily和fontSize检查哪一个是最宽的。
答案 0 :(得分:1)
这是一个奇怪的需求,所以没有“干净”的选择。但是,如果您真的想这样做,可以按照以下步骤操作:
答案 1 :(得分:0)
您可以将单词放入单独的隐藏div中,然后循环测量它们,直到获得最大的div。
此处示例:2
答案 2 :(得分:0)
IIIIIIIIII
WWWWWWWWWW
你的方法有点缺陷。查看上面的10个i
个字符?查看下面的10 W
个字符?它们的字符数相同,但显然W
字符的像素水平跨度更大。您的方法只能使用{Courier。{/ p>等monospaced(固定宽度)字体正常工作
您可能会采取其他一些方法:
text-overflow
CSS属性,并指定&#39; ellipsis&#39;。