当前位置: 首页 > 面试题库 >

获取JS中DOM元素的计算字体大小

蔚学林
2023-03-14
问题内容

是否可以font-size考虑到其他地方(body例如在标记中)进行的常规设置,继承的值等来检测DOM元素的计算结果?

与框架无关的方法会很好,因为我正在开发一个可以独立运行的脚本,但这当然不是必需的。

背景:我正在尝试调整CKEditor的字体选择器插件(在此处提供源),以便它始终显示当前光标位置的字体大小(而不是仅在span具有显式font-size设置的,这是当前行为中)。


问题答案:

您可以尝试使用非标准IE element.currentStyle属性,否则,可以查找DOM Level2标准getComputedStyle方法(如果可用):

function getStyle(el,styleProp) {
  var camelize = function (str) {
    return str.replace(/\-(\w)/g, function(str, letter){
      return letter.toUpperCase();
    });
  };

  if (el.currentStyle) {
    return el.currentStyle[camelize(styleProp)];
  } else if (document.defaultView && document.defaultView.getComputedStyle) {
    return document.defaultView.getComputedStyle(el,null)
                               .getPropertyValue(styleProp);
  } else {
    return el.style[camelize(styleProp)]; 
  }
}

用法:

var element = document.getElementById('elementId');
getStyle(element, 'font-size');

更多信息:

  • 获取样式(QuirksMode)

编辑: 感谢 @Crescent Fresh@kangax@Pekka 的评论。

变化:

  • 添加了camelize功能,因为包含连字符font-size(如fontSize)的属性必须作为currentStyleIE对象上的camelCase(例如:)来访问。
  • document.defaultView在访问之前检查的存在getComputedStyle
  • 添加了最后一种情况,当el.currentStylegetComputedStyle不可用时,可通过获得内联CSS属性element.style


 类似资料:
  • 本文向大家介绍javascript获取元素的计算样式,包括了javascript获取元素的计算样式的使用技巧和注意事项,需要的朋友参考一下 背景 使用css控制页面有4种方式,分别为行内样式(内联样式)、内嵌式、链接式、导入式。 行内样式(内联样式)即写在html标签中的style属性中,如 <div style="width:100px;height:100px;"></div> 内嵌样式即写在

  • 我试图计算select元素中的选项数,以及DOM中某个类的元素数。 我需要比较这两个总数来得出赛普拉斯的断言。 我可以选择所需的选项,并使用each()对它们进行迭代,然后以这种方式递增一个计数器。然而,它是异步的,也是一个笨拙的解决方案。我确信我的cy.get()生成的对象有一个length属性,我就是看不懂它。 这是我期望的事情之一。它将未定义的日志记录到控制台。 我知道我的别名很好,并且我的

  • 问题内容: 这是该问题的后续措施。 我正在开发CKEditor的组件,这是字体下拉菜单的调整版本,始终显示当前选择的字体系列/大小值,无论它们在何处定义,使用和排序。 正如您在另一个问题中看到的那样,确定字体大小现在可以跨浏览器使用。现在我在使用该属性时遇到了麻烦。我的通用“计算样式”函数仅返回定义的完整字体字符串,例如 为了使设置与字体家族下拉列表中的条目匹配,我需要的是我正在检查的DOM元素的

  • 问题内容: 我很难理解如何在PHP中使用DOMElement对象。我找到了这段代码,但是我不确定它是否适用于我: 基本上,我需要在DOM中搜索特定的,之后需要提取一个非标准的(即我用JS编写并使用的非标准的),以便可以看到它的价值。原因是我需要从中获取一份,而在HTML中则需要基于重定向。如果有人可以解释一下我如何为此目的使用DOMDocument,那将有所帮助。我真的很难理解发生了什么以及如何正

  • 我使用Thymeleaf创建html组件。组件在单独的文件中声明: 中基本按钮的声明 这个想法是为组件提供某种类型的工具集。使用此组件的代码将是: 它运行良好,但我考虑了按钮需要具有以下属性的情况:或或任何其他属性。问题来了: 如何将属性传递给按钮? 一种方法是将其作为片段的参数传递,但它太丑了。 有什么方法可以获取片段中占位符的属性吗?(见下面的示例) 我想这样调用片段: 并且在片段中想要获取这

  • 本文向大家介绍用原生js获取DOM元素的方法有哪些?相关面试题,主要包含被问及用原生js获取DOM元素的方法有哪些?时的应答技巧和注意事项,需要的朋友参考一下 getElementById getElementByName --通过name属性 getElementByClassName getElementByTagName querySelector querySelectorAll docu