Firefox supports supports, gets my support
broken-links.com
broken-links.com
I'm not confident if that made sense, but basically I'm concerned that we're (re)creating a personally oft-encountered tension where the individuals that best understand a complex syntax are the least able to create anything aesthetically-pleasing, let alone usable, from it...
For example, it makes sense to have a native @support CSS rule checking for things like border-box support.
But what about detecting features that are separate from rendering? Should @support check for geolocation?
If not, where does that test live - javascript (modernizr, yepnope)? Is separating tests based on type of feature a good thing? If so, how should the interactions between display and feature be intelligently managed? If not, is CSS, Javascript, or some other layer the appropriate place to consolidate tests?
Testing for non-rendering concerns in CSS doesn't make any sense to me, and I'm afraid our future will be HTML markup full of classes namespaced by concern, managed by javascript & feature detection. It's an evolution, but hardly elegant. (class="js-toggle function-geolocation structure-list typography-chrome")
>>The ‘@supports’ rule is a conditional group rule whose condition tests whether the user agent supports CSS property:value pairs.
Source - http://dev.w3.org/csswg/css3-conditional/#at-supports
So, no. @supports will check for css rules, and nothing else.
That would just be silly.
My point is only that the alternatives aren't all that less silly, at least from an actually-building-and-maintaining perspective.
Right after @supports landed I got a bug filed for supportsCSS() https://bugzilla.mozilla.org/show_bug.cgi?id=779917 and a few days later an initial patch landed. So I think we're all set here.
Also on browser support: Opera already has an implementation in progress of @supports; we haven't seen patches yet from WebKit but there is definitely interest.
I realize nobody likes adding extra JS libraries, but if your only trying to access these properties from JS to begin with it doesn't seem like that big a deal.
Plus it's always a good thing to kill off javascript libraries; we don't want to always keep sending JS down the wire when the platform should have this stuff by default.
@supports (vendor-prefix)
then apply vendor prefixes to all css rules not understood by the browser.End of nightmare.
I don't get it. It seems like you're saying, "if it supports the -moz prefix, it's FireFox, therefore I know that it doesn't support X and needs -mox-X."
But that requires you to separately know that the browser doesn't support X - the very thing this is trying to solve.
It's much simpler to say "if it supports X, use it." If the browser releases a new version that supports X, you don't have to do anything for those users to get the benefit.
Did I misunderstand you?
The closest analog in existing tools might be YepNope - "a conditional loader for your polyfills." http://yepnopejs.com/
There's an argument to be made that this is unnecessarily reducing maintainability and increasing development complexity by building redundant functionality to account for edge cases, but there are scenarios where it's appropriate. Building modern web apps with a support gradient more inclusive than latest Webkit/Gecko will appreciate the tools.
http://code.google.com/p/chromium/issues/detail?id=55458
It's unlikely anyone else will fix it, either. Linux Chrome doesn't get much love. (Alternatively, it gets a proportionate amount of love to the size of its userbase.)
I'm really sorry I never fixed it. I sometimes use Firefox on sites like this if the rendering really matters. You can also use a user stylesheet to unset it for all sites.