首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何获取某个字体的基线高度?

如何获取某个字体的基线高度?
EN

Stack Overflow用户
提问于 2012-04-20 21:23:16
回答 3查看 4.1K关注 0票数 8

我希望能够使用javascript在div中找到一段文本的baseline的高度。

我不能使用预定义的字体,因为我的许多用户将在他们的浏览器中使用更大的字体设置。

我如何在javascript中做到这一点?

EN

Stack Overflow用户

回答已采纳

发布于 2012-07-23 23:17:28

我为此做了一个小的jQuery插件。原理很简单:

在容器中,插入两个内容相同的内联元素,但一个样式为非常小的.,另一个样式为非常大的A。然后,由于默认情况下有vertical-align:baseline,因此基线如下所示:

代码语言:javascript
运行
复制
       ^ +----+ ^
       | | +-+| | top
height | |.|A|| v
       | | +-+| 
       v +----+

=======================
baseline = top / height
=======================

下面是coffeescript (JS here)中的插件:

代码语言:javascript
运行
复制
$ = @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))

然后,用以下命令抽出它:

代码语言:javascript
运行
复制
$('body').baseline()
// or whatever selector:
$('#foo').baseline()

--

试一试吧:http://bl.ocks.org/3157389

票数 13
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10247132

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档