instance method Element#getStyle
Element#getStyle(style) → String | null
-
style(String) – The property name to be retrieved.
Returns the given CSS property value of element. The property can be
specified in either its CSS form (font-size) or its camelized form
(fontSize).
This method looks up the CSS property of an element whether it was
applied inline or in a stylesheet. It works around browser inconsistencies
regarding float, opacity, which returns a value between 0
(fully transparent) and 1 (fully opaque), position properties
(left, top, right and bottom) and when getting the dimensions
(width or height) of hidden elements.
Examples
$(element).getStyle('font-size'); // equivalent: $(element).getStyle('fontSize'); // -> '12px'
Notes
Not all CSS shorthand properties are supported. You may only use the CSS properties described in the Document Object Model (DOM) Level 2 Style Specification.
Old versions of Internet Explorer return literal values; other browsers return computed values.
Consider the following HTML snippet:
<style> #test { font-size: 12px; margin-left: 1em; } </style> <div id="test"></div>
Then:
$('test').getStyle('margin-left'); // -> '1em' in Internet Explorer, // -> '12px' elsewhere.
Safari returns null for any non-inline property if the element is
hidden (has display set to 'none').
Caveats
Early versions of Prototype attempted to "fix" this behavior for certain properties. A few examples:
- Reading and writing the CSS
opacityproperty works exactly like callingElement.getOpacityandElement.setOpacityrespectively. This lets us pretend that IE didn't have a proprietary way to set opacity in versions 6-7. - Browsers disagree on how to report certain properties of hidden
elements (i.e.,
display: none). Opera, for instance, says that a hidden element has awidthof0px. It's an arguable point, but we returnnullin those cases instead (so as to agree with the majority behavior). In short: if an element is hidden,getStyle('width')andgetStyle('height')will returnnull. - In older versions of Internet Explorer, Prototype will return a
pixel value for
widthandheight, even if the literal value is a different unit. It does this by treatingwidthlikeoffsetWidthandheightlikeoffsetHeight. This is often the incorrect measurement, but it's a mistake we're stuck with for backward-compatibility. If you're trying to measure an element's dimensions, don't usegetStyle; useElement.measureinstead.
This method can be called either as an instance method or as a generic method. If calling as a generic, pass the instance in as the first argument.