我希望能够使用javascript在div中找到一段文本的baseline的高度。
我不能使用预定义的字体,因为我的许多用户将在他们的浏览器中使用更大的字体设置。
我如何在javascript中做到这一点?
发布于 2012-07-23 23:17:28
我为此做了一个小的jQuery插件。原理很简单:
在容器中,插入两个内容相同的内联元素,但一个样式为非常小的.,另一个样式为非常大的A。然后,由于默认情况下有vertical-align:baseline,因此基线如下所示:
^ +----+ ^
| | +-+| | top
height | |.|A|| v
| | +-+|
v +----+
=======================
baseline = top / height
=======================下面是coffeescript (JS here)中的插件:
$ = @jQuery ? require 'jQuery'
detectBaseline = (el = 'body') ->
$container = $('<div style="visibility:hidden;"/>')
$smallA = $('<span style="font-size:0;">A</span>')
$bigA = $('<span style="font-size:999px;">A</span>')
$container
.append($smallA).append($bigA)
.appendTo(el);
setTimeout (-> $container.remove()), 10
$smallA.position().top / $bigA.height()
$.fn.baseline = ->
detectBaseline(@get(0))然后,用以下命令抽出它:
$('body').baseline()
// or whatever selector:
$('#foo').baseline()--
试一试吧:http://bl.ocks.org/3157389
https://stackoverflow.com/questions/10247132
复制相似问题