25

Is it possible in JavaScript to know if a CSS property is supported by the client browser? I'm talking about the rotation properties of CSS3. I want to execute some functions only if the browser supports them.

4 Answers 4

40

I believe you can do it this way:

if ('WebkitTransform' in document.body.style 
 || 'MozTransform' in document.body.style 
 || 'OTransform' in document.body.style 
 || 'transform' in document.body.style) 
{
    alert('I can Rotate!');
}
Sign up to request clarification or add additional context in comments.

2 Comments

It may be worth noting that this technically tests whether the browser supports the CSS3 transform style and not specifically the rotate() transform function. In my (limited) experience, the former has always implied the latter, but I’m not sure if that’s a reliable assumption (see this question).
Working example: jsfiddle.net/dp3ueaz5 But I would rather use this function: code.tutsplus.com/tutorials/… Better to understand and it automatically checks vendor prefixes. ;)
8

There is a new DOM API CSS.supports for that purpose. FF, Opera (as supportsCSS) and Chrome Canary already implement this method.

For cross-browser compatibility you can use my CSS.supports polyfill

Example:

CSS.supports("display", "table");//IE<8 return false

But, you still need to specify browser prefix for prefixing css properties. For example:

CSS.supports("-webkit-filter", "blur(10px)");

I suggest to using Modernizr for feature-detection.

Comments

1

May be try this?

var temp = document.createElement('div');
var isSupport = temp.style['propName'] != undefined;

2 Comments

Not an ideal answer, but why is this downvoted? I don't see any technical error with it
@RobertDundon perhaps my solution is like the first, anyway thanks for support =)
0

You can use Modernizr library.

Example for css transform:

in .css file;

.no-csstransforms .box { color: red; }
.csstransforms .box { color: green; }

in .js file;

if (Modernizr.csstransforms) {
  // supported
} else {
  // not-supported
}

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.