js 计算 字符 宽度
2014-09-12 17:01
639 查看
<span id="computeFontWidth"></span>
#computeFontWidth {
visibility: hidden;
white-space: nowrap;
}
/**
* e 显示字符控件
* text 要显示的字符串
*sumWidth e的宽度
*/
function (e, text, sumWidth) {
if (2 == arguments.length) {
sumWidth = arguments[0].offsetWidth;
} else if (3 == arguments.length) {
sumWidth = arguments[2];
} else {
throw new Error("IllegalArguments Exception");
}
var fontSize = document.defaultView.getComputedStyle(e, null).getPropertyValue("font-size");
var moreSpaceWidth = 0;
var spaceCounter = innerSpaceStat(text);
var spaceWidth = computeSpaceWidth(fontSize);
for (var i = 0; i < spaceCounter.length; i++) {
if (spaceCounter[i] > 1) {
moreSpaceWidth += (spaceCounter[i] - 1) * spaceWidth;
}
}
return sumWidth - computeFontWidth(text, fontSize) - moreSpaceWidth;
//计算字符所占宽度
function computeFontWidth(str, fontSize) {
var width = 0;
if (!!str && "string" == typeof str && str.length > 0) {
var e = document.querySelector("#computeFontWidth");
e.textContent = "";
e.style.fontSize = fontSize;
e.textContent = str;
width = e.offsetWidth;
}
return width;
}
//计算空白字符所占宽度
function computeSpaceWidth(fontSize) {
return computeFontWidth("1 1", fontSize) - 2 * computeFontWidth("1");
}
//字符串内部空白字符统计
function innerSpaceStat(str) {
var counterArray = [];
if (!!str && "string" == typeof str && str.length > 0) {
var counter = 0;
for (var i = 0; i < str.length; i++) {
if (" " == str.charAt(i)) {
counter++;
} else {
if (counter != 0) {
counterArray.push(counter);
}
counter = 0;
}
}
}
return counterArray;
}
}
#computeFontWidth {
visibility: hidden;
white-space: nowrap;
}
/**
* e 显示字符控件
* text 要显示的字符串
*sumWidth e的宽度
*/
function (e, text, sumWidth) {
if (2 == arguments.length) {
sumWidth = arguments[0].offsetWidth;
} else if (3 == arguments.length) {
sumWidth = arguments[2];
} else {
throw new Error("IllegalArguments Exception");
}
var fontSize = document.defaultView.getComputedStyle(e, null).getPropertyValue("font-size");
var moreSpaceWidth = 0;
var spaceCounter = innerSpaceStat(text);
var spaceWidth = computeSpaceWidth(fontSize);
for (var i = 0; i < spaceCounter.length; i++) {
if (spaceCounter[i] > 1) {
moreSpaceWidth += (spaceCounter[i] - 1) * spaceWidth;
}
}
return sumWidth - computeFontWidth(text, fontSize) - moreSpaceWidth;
//计算字符所占宽度
function computeFontWidth(str, fontSize) {
var width = 0;
if (!!str && "string" == typeof str && str.length > 0) {
var e = document.querySelector("#computeFontWidth");
e.textContent = "";
e.style.fontSize = fontSize;
e.textContent = str;
width = e.offsetWidth;
}
return width;
}
//计算空白字符所占宽度
function computeSpaceWidth(fontSize) {
return computeFontWidth("1 1", fontSize) - 2 * computeFontWidth("1");
}
//字符串内部空白字符统计
function innerSpaceStat(str) {
var counterArray = [];
if (!!str && "string" == typeof str && str.length > 0) {
var counter = 0;
for (var i = 0; i < str.length; i++) {
if (" " == str.charAt(i)) {
counter++;
} else {
if (counter != 0) {
counterArray.push(counter);
}
counter = 0;
}
}
}
return counterArray;
}
}
相关文章推荐
- 计算中文、英文、数字、空格的字符像素宽度
- [windows][ui]计算字符宽度
- js计算文本框输入的字符数
- 处理字符串的一些js/jq方法(去除HTML,去除空格,计算真实长度,截取中英文字符)
- js实现计算文字宽度
- js中字符数的计算方式
- 修改jquery.validate.js计算中文字符长度的规则。
- 6.22 android计算字符高度宽度,红蓝3D图片的制作原理及NDK生成实现
- JS计算每个字符出现的次数
- Python计算字符宽度的方法
- Python中计算字符宽度
- 获取字符宽度:并非自适应。coretext去计算
- 易车网的一道面试题:JS计算字符串中出现次数最多的字符和出现的次数
- JS计算滚动条的宽度
- jQuery计算文本宽度和input标签根据输入字符动态自适应宽度的实现
- JS计算字符串字符长度
- js计算一个字符中包括中英文的长度,中文占2个字符,汉子和英文占1个字符
- 获取字符宽度:并非自适应。coretext去计算
- jQuery计算文本宽度和input标签根据输入字符动态自适应宽度的实现
- jQuery计算文本宽度和input标签根据输入字符动态自适应宽度的实现