获取 JS 中 DOM 元素的计算字体大小
是否可以检测 DOM 元素的计算 font-size
,同时考虑其他地方所做的通用设置(例如在 body
标签中)、继承值等在?
独立于框架的方法会很好,因为我正在开发一个应该独立工作的脚本,但这当然不是必需的。
背景:我正在尝试调整CKEditor的字体选择器插件(来源此处),以便它始终显示当前光标位置的字体大小(而不是仅在在具有显式 font-size
设置的 span
内,这是当前的行为)。
Is it possible to detect the computed font-size
of a DOM element, taking into consideration generic settings made elsewhere (In the body
tag for example), inherited values, and so on?
A framework-independent approach would be nice, as I'm working on a script that should work standalone, but that is not a requirement of course.
Background: I'm trying to tweak CKEditor's font selector plugin (source here) so that it always shows the font size of the current cursor position (as opposed to only when within a span
that has an explicit font-size
set, which is the current behaviour).
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您可以尝试使用非标准 IE
元素.currentStyle
属性,否则您可以查找 DOM 级别 2 标准getCompulatedStyle
方法(如果可用):用法:
更多信息:
编辑:感谢@Crescent Fresh、@kangax和@Pekka的评论。
更改:
camelize
函数,因为包含连字符的属性(例如font-size
)必须以驼峰命名法(例如:fontSize
)在currentStyle
IE 对象。getCompulatedStyle
之前检查document.defaultView
是否存在。el.currentStyle
和getCompulatedStyle
不可用时,通过element.style
获取内联 CSS 属性。You could try to use the non-standard IE
element.currentStyle
property, otherwise you can look for the DOM Level 2 standardgetComputedStyle
method if available :Usage:
More info:
Edit: Thanks to @Crescent Fresh, @kangax and @Pekka for the comments.
Changes:
camelize
function, since properties containing hypens, likefont-size
, must be accessed as camelCase (eg.:fontSize
) on thecurrentStyle
IE object.document.defaultView
before accessinggetComputedStyle
.el.currentStyle
andgetComputedStyle
are not available, get the inline CSS property viaelement.style
.当您使用
$('#element')[.css][1]( 时,jQuery(至少 1.9)使用
,所以如果您可以使用 jQuery,那么您真的不必费心使用更复杂的解决方案。getCompulatedStyle()
或currentStyle
本身'fontSize')在 IE 7-10、FF 和 Chrome 中测试
Looks like jQuery (1.9 at least) uses
getComputedStyle()
orcurrentStyle
itself when you use$('#element')[.css][1]('fontSize')
, so you really shouldn't have to bother with more complicated solutions if you're OK using jQuery.Tested in IE 7-10, FF and Chrome
为了克服“em”问题,我快速编写了一个函数,如果 ie 中的字体大小是“em”,该函数将使用正文字体大小进行计算。
To overcome the 'em' problem I have quickly written a function, if the font-size in ie is 'em' the function calculates with the body font-size.