This came up on en.wp and I figured I'd write something on it. I came to the following summary of what I think the current status quo is, but it is difficult to write something that is simple and accurate at the same time :D
Browser support
Support for browsers when using CSS is dictated by the overall Browser support matrix. From this guideline several conclusions follow:
- Grade A browsers should be fully supported by the CSS delivered
- Grade C browsers have limited support and limited testing. All content should be readable, but might not always be pretty. Basic functionality of the wiki should be accessible (read, edit, history, delete, move, block and the various lists).
- Browsers older than Grade C are not supported. Consumers should not expect pages to render correctly.
- When CSS is disabled all content should be correctly machine readable.
Practices for CSS browser support
From the principles the following additional practices are followed:
- CSS supported by both Grade A and Grade C browsers is always safe to use.
- CSS supported only by Grade A browsers:
- Should have a fallback with CSS that is supported by Grade C browsers
- Should be used for features that are NOT available on Grade C browsers (JS based). However, use of `.client-nojs` might be required to provide graceful degradation of the page in this case.
- CSS supported by a subset of Grade A can be used to further enhance, but should never be required to render.
- We remove vendor prefixed statements and browser hacks for browsers that can't realistically receive html any longer.
- Avoid depending on vendor prefixed CSS for the lowest supported browsers. Vendor prefixes are for experimental features and many confusing browser bugs can hide in this experimental fase of support. For your lowest supported browsers you want something that is predictable, especially because older browsers are harder to test with. Use vendor prefixed CSS to progressively enhance Grade A, but not to provide a baseline of support.
Feedback welcome: ping @Krinkle, @Volker E. (WMF), @Jdlrobson ?