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).
getComputedStyle() method returns an object containing the values of all CSS properties of an element, after applying active stylesheets and resolving any basic computation those values may contain. Individual CSS property values are accessed through APIs provided by the object, or by indexing with CSS property names.
To set or copy JavaScript computed style from one element to another, we can loop through each style and call the setProperty method to set the styles on the target element. to add a div and a section element. We define the copyNode function that takes the sourceNode and targetNode .
You could try to use the non-standard IE element.currentStyle
property, otherwise you can look for the DOM Level 2 standard getComputedStyle
method if available :
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)]; } }
Usage:
var element = document.getElementById('elementId'); getStyle(element, 'font-size');
More info:
Edit: Thanks to @Crescent Fresh, @kangax and @Pekka for the comments.
Changes:
camelize
function, since properties containing hypens, like font-size
, must be accessed as camelCase (eg.: fontSize
) on the currentStyle
IE object.document.defaultView
before accessing getComputedStyle
.el.currentStyle
and getComputedStyle
are not available, get the inline CSS property via element.style
.If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With