javascript - 如何从浏览器中的字体大小获取行高?

标签 javascript html dom browser getclientrect

Range.getClientRects() 方法返回由 range 占用的 ClientRect 列表,当范围在正常范围内时,这很有效有文字。

<div class="line">
  <span class="run">Hello!</span><span class="run"></span>
</div>

但是当span为空时,获取不到ClientRect。 (就像在第二个跨度中一样)

我尝试了以下方法,但是,结果并不令人满意。

  • 将 span 的显示属性设置为 inline-block
  • '\ufeff' 插入到 span 中。在这种情况下,我可以获得 ClientRect 但这会弄乱代码的其他部分。

如果我可以根据font-size 计算行高,那将是最好的。有什么办法可以得到空跨度的行高,单位是px?

注意:我并不是要获取 line-height css 属性。在这种情况下,line-height 将是 normal

最佳答案

  1. 只需将任意字符放入 <span> .在这种情况下,我放了一个 U+FEFF性格。

    var elem = $('span')[0];
    elem.textContent = '\ufeff';
    
  2. 获取一个矩形。

    var rect = elem.getClientRect();
    ...
    
  3. 恢复 <span>为空。

    elem.textContent = '';
    

关于javascript - 如何从浏览器中的字体大小获取行高?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22060546/

相关文章:

javascript - 如何生成 <form :input> tags dynamically from JS?

javascript - 我们可以在 Angular JS 的装饰器中访问 $provide 吗?

数组的 Javascript 顺序。是随机的吗?

javascript - 为jsp中的每个循环获取内部隐藏字段的值

jquery - 同时使用 html,css{ } 元素的原因

xml - 在 VBA 中使用 DOM 解析 XML 时出错

javascript - iframe 在 Firefox 17 中不会滚动

javascript - 提交表格

javascript - 递归Javascript

javascript - 使用 javascript 删除除 <br> 或 <br/> 标签之外的 html 标签