27

Here's how you get one css attribute using jQuery:

$('someObject').css('attribute')

How do you get them all? (without specifying and preferably in the following format so it can be reapplied with jQuery later):

    cssObj = {
        'overflow':'hidden',
        'height':'100%',
        'position':'absolute',
    }

Thanks!!

EDIT

The methods I'm trying to get are declared in a style sheet (they are not inline). Sorry for not specifying.

3
  • +1 I thought of asking the same question few days ago Commented Oct 19, 2010 at 4:29
  • possible duplicate of Can jQuery get all CSS styles associated with an element? Commented Oct 23, 2010 at 0:20
  • So what you're saying is, Gotta Catch 'Em All? Commented Jul 13, 2016 at 4:06

5 Answers 5

17

See this live example using the jQuery attribute selector

$(document).ready(function() {
    alert($("#stylediv").attr('style'));
});​
Sign up to request clarification or add additional context in comments.

8 Comments

@Avinash - So? .css() wouldn't pick that up either: jsfiddle.net/kGkrX ---- And this question is trying to get all the CSS properties that would be picked up by .css(). --- Getting all the applied styles is a completely different question with a much more difficult answer (Firebug can do it ;) )
@peter I'm just trying to say, we just can't get all css properties [ declared in a style tag ], of an element using style attribute
Yep, that's why i made the comment below. I thought the OP wanted all the CSS attributes (non-inline) applied to an element, in which case neither of these answers would work. But yes, these answers are the equivalent of .css *.
@peter You can get all the css properties declared in an element's style tag what does it mean ? you mean style attribute. BTW, I'm not too specific about declaring css properties only in a style Tag. I mean declaring other than inline-style :)
$('#stylediv').prop('style') that's all ;)
|
9

What about something like this:

jQuery CSS plugin that returns computed style of element to pseudo clone that element?

It is ugly, but it appeared to work for the poster...

This also may be of interest: https://developer.mozilla.org/en/DOM:window.getComputedStyle

1 Comment

oh wow that is fugly +1 :) This is probably the answer unless someone has a way that doesn't iterate through all the attributes (which I doubt, considering the discussion on that SO question). Thanks for the heads up on getComputedStyle as well!
6

Not sure how cross-browser this one is, but it works in Chrome -

https://gist.github.com/carymrobbins/223de0b98504ac9bd654

var getCss = function(el) {
    var style = window.getComputedStyle(el);
    return Object.keys(style).reduce(function(acc, k) {
        var name = style[k],
            value = style.getPropertyValue(name);
        if (value !== null) {
            acc[name] = value;
        }
        return acc;
    }, {});
};

Comments

1

window.getComputedStyle(element);

// For example
var element = document.getElementById('header');
window.getComputedStyle(element);

1 Comment

NOTE This will return an object element.
0

For a platform (the name is subject to nondisclosure) where the Chrome or Safari DevTools/WebInspector are not available, and you need to dump the styles to the log.

  dumpCssFromId (id) {
    const el = document.getElementById(id);
    const styles = window.getComputedStyle(el);
    return Object.keys(styles).forEach((index) => {
      const value = styles.getPropertyValue(index);
      if (value !== null  && value.length > 0) {
        console.log(`style dump for ${id} - ${index}: ${value}`);
      }
    }, {});
  }

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.