Support table
CSS Selectors
| Feature | IE6 | IE7 | IE8 | IE9 | IE10 |
|---|---|---|---|---|---|
> (descendant) |
Β | 7 β | β | β | β |
[attr] (attribute) |
Β | 7 β | β | β | β |
.class1.class2 (multiple classes) |
Β | 7 β | β | β | β |
~ (sibling) |
Β | 7 β | β | β | β |
+ (adjacent) |
Β | 7 β | β | β | β |
:first-child * |
Β | Β | 8 β | β | β |
:focus |
Β | Β | 8 β | β | β |
:before :after (single colon only) |
Β | Β | 8 β | β | β |
:lang |
Β | Β | 8 β | β | β |
:first-of-type, :last-of-type |
Β | Β | Β | 9 β | β |
:last-child |
Β | Β | Β | 9 β | β |
:empty |
Β | Β | Β | 9 β | β |
:enabled :disabled :checked |
Β | Β | Β | 9 β | β |
:not() |
Β | Β | Β | 9 β | β |
:nth-child() :nth-last-child() |
Β | Β | Β | 9 β | β |
:nth-of-type() :nth-last-of-type() :only-of-type() |
Β | Β | Β | 9 β | β |
:only-child() |
Β | Β | Β | 9 β | β |
:target |
Β | Β | Β | 9 β | β |
::selection |
Β | Β | Β | 9 β | β |
:root |
Β | Β | Β | 9 β | β |
first-child: doesnβt work for elements inserted via JS.
CSS properties
| Feature | IE6 | IE7 | IE8 | IE9 | IE10 | IE11 |
|---|---|---|---|---|---|---|
max-width |
Β | 7 β | β | β | β | β |
position: fixed |
Β | 7 β | β | β | β | β |
outline |
Β | Β | 8 β | β | β | β |
display: inline-block * |
Β | Β | 8 β | β | β | β |
display: table |
Β | Β | 8 β | β | β | β |
border-collapse, border-spacing, table-layout, β¦ |
Β | Β | 8 β | β | β | β |
whitespace: pre-wrap |
Β | Β | 8 β | β | β | β |
whitespace: pre-line |
Β | Β | 8 β | β | β | β |
box-sizing |
Β | Β | 8 β | β | β | β |
background-clip |
Β | Β | Β | 9 β | β | β |
background-origin |
Β | Β | Β | 9 β | β | β |
background-size |
Β | Β | Β | 9 β | β | β |
background: x, y, z (multiple backgrounds) |
Β | Β | Β | 9 β | β | β |
opacity |
Β | Β | Β | 9 β | β | β |
border-radius |
Β | Β | Β | 9 β | β | β |
box-shadow |
Β | Β | Β | 9 β | β | β |
rgba() |
Β | Β | Β | 9 β | β | β |
transform |
Β | Β | Β | 9 β | β | β |
animation |
Β | Β | Β | Β | 10 β | β |
transition |
Β | Β | Β | Β | 10 β | β |
linear-gradient() |
Β | Β | Β | Β | 10 β | β |
text-shadow β polyfill |
Β | Β | Β | Β | 10 β | β |
border-image |
Β | Β | Β | Β | Β | 11 β |
inline-block: IE6/7 can only support inline-block for elements that are naturally inline, like span
Features
| Feature | IE6 | IE7 | IE8 | IE9 | IE10 | IE11 |
|---|---|---|---|---|---|---|
| PNG alpha transparency | Β | 7 β | β | β | β | β |
| data URI β | Β | Β | 8 β | β | β | β |
| JS: JSON parsing β | Β | Β | 8 β | β | β | β |
| JS: Cross-origin resource sharing β | Β | Β | 8 β | β | β | β |
| JS: Local storage β | Β | Β | 8 β | β | β | β |
CSS: @media queries β polyfill |
Β | Β | Β | 9 β | β | β |
| HTML: new HTML5 elements - polyfill | Β | Β | Β | 9 β | β | β |
HTML: <canvas> |
Β | Β | Β | 9 β | β | β |
HTML: <svg> |
Β | Β | Β | 9 β | β | β |
HTML: <img src='image.svg'> |
Β | Β | Β | 9 β | β | β |
| CSS: flexbox β * | Β | Β | Β | Β | 10 β | β |
HTML: <input placeholder='..'> β |
Β | Β | Β | Β | 10 β | β |
HTML: <input type='range'> |
Β | Β | Β | Β | 10 β | β |
HTML: <input required> β |
Β | Β | Β | Β | 10 β | β |
| JS: Web sockets | Β | Β | Β | Β | 10 β | β |
| JS: Fullscreen mode | Β | Β | Β | Β | Β | 11 β |
flexbox: IE10 only supports the 2012 syntax with -ms- prefix.
Polyfills
IE polyfills
Always install these in almost every project:
- json2 for JSON parsing (for IE7 below)
- selectivizr for selectors (for IE8 below)
- html5shiv for new HTML tags (for IE8 below)
- respond for media queries (for IE8 below)
- See this article for info
<!--[if lt IE 9]>
<script src='https://cdnjs.cloudflare.com/ajax/libs/nwmatcher/1.2.5/nwmatcher.min.js'></script>
<script src='https://cdnjs.cloudflare.com/ajax/libs/json2/20140204/json2.min.js'>
<script src='https://cdn.rawgit.com/gisu/selectivizr/1.0.3/selectivizr.js'></script>
<script src='https://cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv.min.js'>
<script src='https://cdnjs.cloudflare.com/ajax/libs/respond.js/1.4.2/respond.js'>
<![endif]-->
You may also need
- modernizr for feature detection
for CSS3 decorations
Misc
IE Conditional comment HTML
<!--[if lt IE 7 ]> <html class="ie6"> <![endif]-->
<!--[if IE 7 ]> <html class="ie7"> <![endif]-->
<!--[if IE 8 ]> <html class="ie8"> <![endif]-->
<!--[if IE 9 ]> <html class="ie9"> <![endif]-->
<!--[if (gt IE 9)|!(IE)]><!--> <html class=""> <!--<![endif]-->
IE conditionals
<!--[if IE]> I'm IE <![endif]-->
<!--[if !IE]> --> Not IE <!-- <![endif]-->
0 Comments for this cheatsheet. Write yours!