元素中水平和垂直放置的等宽字符数
How many monospace characters fit horizontally and vertically in an element?
我试图找出一个元素中可容纳多少等宽字符(例如 div
),知道大小和font-size
。
例如,我期望结果是:
{
x: Math.floor(divWidth / fontSize)
, y: Math.floor(divHeight / lineHeight)
}
但似乎他们是不对的:对于字体大小50px
和width: 100px
,预期的答案将是 2
,但它3
:
div {
font-family: monospace;
background: black;
color: lightgreen;
font-weight: bold;
width: 100px;
height: 100px;
font-size: 50px;
}
<div>
123
123
</div>
对于上面的例子,答案应该是:
{
x: 3 // 3 chars horizontally
, y: 1 // 1 char vertically
}
如何自动计算这些值?
var $div = $("div");
var divSize = {
w: $div.width()
, h: $div.height()
};
var fontSize = parseInt($div.css("font-size"));
我构建了一个 jQuery 插件来做到这一点:
$.fn.textSize = function () {
var $self = this;
function getCharWidth() {
var canvas = getCharWidth.canvas || (getCharWidth.canvas = $("<canvas>")[0])
, context = canvas.getContext("2d")
;
context.font = [$self.css('font-size'), $self.css('font-family')].join(' ');
var metrics = context.measureText("3");
return metrics.width;
};
var lineHeight = parseFloat(getComputedStyle($self[0]).lineHeight);
return {
x: Math.floor($self.width() / getCharWidth())
, y: Math.floor($self.height() / lineHeight)
};
};
alert(JSON.stringify($("div").textSize()));
div {
font-family: monospace;
background: black;
color: lightgreen;
font-weight: bold;
width: 100px;
height: 100px;
font-size: 50px;
line-height: 1;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
</div>
你不能这样计算div 中有多少个字符,font-size:50px
没有定义每个字符的宽度(只需比较"w"和"l",这些字符不能具有相同的宽度)。
尝试:查找适合多少个字母div并且:http://itnow.blogspot.fr/2009/05/calculating-number-of-characters-that.html
问候
相关文章:
- 在JavaScript中输出转义字符
- 不同浏览器中的空白字符正则表达式行为
- Regex匹配除“”之外的所有字符;.js”;
- 拆分文本以每隔n个字符添加一行新行,并注意空格
- 使用RegExp查找url中的字符
- 如何为jQuery屏蔽输入插件创建一个允许字母数字、空格和重音字符的掩码
- 使用正则表达式将输入格式设置为单字符逗号、单字符逗号等
- 允许在文本框中使用某些字符
- 根据页面的位置突出显示文本中的字符
- 元素的内容必须由格式正确的字符数据或标记组成
- 如何将字符串拆分为字符,但在javascript中保留空格
- 使用Google Maps API向标记添加多个字符
- 处理JSON字符串会导致JavaScript错误
- 单元格的工具提示或标题不显示超过2000个字符
- javascript替换换行符和特殊字符
- angularjs删除动态形式元素中的特殊字符
- 元素名称上带有短划线 (-) 字符的 Json 对象
- 允许表单元格内容水平展开
- 如何在c3js动态图表上进行平滑(水平)转换
- 元素中水平和垂直放置的等宽字符数