I've decided not to support IE7; what JS/CSS/HTML features can I now use?
css, html, internet-explorer-7, internet-explorer-8, javascript
Solution
Internet Explorer 8 is touted by Microsoft to be, among other things, fully CSS2.1 compliant. However, a number of bugs have been found so it's not actually fully compliant, but of course that doesn't mean it hasn't gotten better from version 7.
Anyway, the following are some of the well-known features introduced to IE8 that weren't present in IE7 (this list is by no means exhaustive):
JavaScript
- Basic implementation of Selectors API level 1 (`querySelectorAll()`)
- Basic implementation of cross-origin resource sharing (cross-domain Ajax)
- Native JSON parsing capabilities
- DOM improvements (a probable cause of the fixes to CSS attribute selectors — see below)
JS APIs in HTML5
- Cross-document messaging
- Web storage
- History traversal
CSS
CSS2.1
- IE8 has caught up with all (most?) of the CSS2.1 enhancements that were added to CSS1 properties, a list of which you can find at MSDN
- Fixes to the box model with regards to collapsing margins, floating and stacking
- `inherit` keyword
- `outline` property
- `white-space` property for `pre-wrap` and `pre-line`
- Full support for `display: inline-block` on any elements
- `display: table`
- Generated content and automatic numbering: the `:before` and `:after` pseudo-elements, as well as `quotes`, `content`, the `attr()` function and CSS counters
- Printing and paged media: the `@page` rule now works with the page pseudo-classes, typographic `orphans` and `widows`, and page breaks are supported to some extent
- `:active` and `:focus` pseudo-classes
- `:lang()` pseudo-class
- The obscure syntax issues that affected the sibling combinators, CSS2.1's `+` and CSS3's `~`, in IE7 have been corrected in IE8 (the `* + html` hack no longer works either)
- The obscure bug that affected only DOM updates for the adjacent sibling combinator `+` has been corrected in IE8
- The HTML attribute and DOM property issues that affected CSS2.1 and CSS3 attribute selectors in IE7 have been corrected in IE8
- Some obscure bugs related to specificity have been corrected; one example is with the various dynamic pseudo-classes which I identified in IE6/7 in this answer
CSS3
- `box-sizing` property in CSS3 for `content-box` and `border-box` (`padding-box` was originally a Mozilla proposal so it doesn't exist in IE; it wasn't added to the CSS3 UI spec until recently, and it's still at risk of removal as of the January 2012 Last Call Working Draft)
- Some CSS3 features have been present in IE and proposed by Microsoft long before they were retconned into their respective specs, including `@font-face`, `overflow-x`/`overflow-y`, `text-align-last`, `word-wrap` (now `overflow-wrap`), and ruby text
HTML
- `<abbr>` and `<q>`
- `<object>` fallbacks
Miscellaneous
- Limited support for Data URIs
- WAI-ARIA compliance for accessibility
And of course, some sources:
- IE8's release announcement
- CSS Compatibility and Internet Explorer
- CSS Improvements in Internet Explorer 8
- QuirksMode CSS compatibility tables
- Feature support comparison between IE7 and IE8 at caniuse.com
Problem
{idea came from I've decided not to cater for IE6 - What tasty CSS treats can I use? but I wanted an IE7 version} Ok firstly, this is not a discussion on whether I should be catering for IE7. I'm sure there's hundreds of threads on S.O. where you can discuss the pros, cons, market shares, javascript shivs and all the other stuff that comes with it. Let's say I've put two fingers up to IE7 and am ignoring its existence - what can I now do differently in the way I make my pages? Pseudo-selectors? Parent/Child selectors? Hardware-accelerated potato counting? Other tidy stuff? What are the new freedoms that come with abandoning IE7? I know some of you will be itching to tell me why I should support ie7 or about js fixes that mean I can use certain things etc etc - Please don't waste your/my/our time!