Web Devout tidings


Archive for March 30th, 2006

Internet Explorer 7 CSS support information available

Thursday, March 30th, 2006

I have now finished testing the CSS 2.1 and CSS 3 support in Internet Explorer 7. The results are more significant than the previously reported HTML support improvements. CSS was the primary area of layout engine development in Internet Explorer 7, so this is where most of the layout engine changes reside.

Here are the major changes in Internet Explorer 7 as far as CSS 2.1 and CSS 3 support:

  • !important is now properly supported.
  • Much better support for selectors, including universal selectors, child selectors, adjacent sibling selectors, CSS 3 indirect adjacent sibling selectors, and all attribute selectors in CSS 2.1 and CSS 3. This is better support than Opera 8.5, although still behind Firefox 1.5 in some areas.
  • More correct pseudo-class and pseudo-element grammar implementation.
  • :first-child is now supported.
  • :hover is now supported for all elements, although not perfectly.
  • Backgrounds now correctly include border region.
  • dotted border style is now properly supported for one-pixel-wide borders.
  • bottom and right can now be used to stretch the box’s dimensions.
  • Some float bugs were fixed.
  • Box sizes are now properly constrained by the height and width properties.
  • Several margin bugs have been fixed.
  • max-height, max-width, min-height, and min-width are now mostly supported.
  • overflow is now correctly supported.
  • position:fixed is now supported.
  • z-index property now behaves correctly with select elements.

Here are some things I was disappointed about:

  • It still doesn’t support combined class selectors like p.foo.bar{} and still has other bugs with class and ID selectors.
  • :hover has some bugs that cause the hover state to sometimes remain even after the mouse has moved away.
  • :before and :after still aren’t supported, meaning counters, content, and quotes also aren’t supported.
  • inherit (one of the fundamental features of CSS) still isn’t supported.
  • Borders still aren’t supported for table row groups.
  • border-spacing, caption-side, and empty-cells still aren’t supported.
  • There was a nasty regression regarding the clear property that prevents elements from clearing floats under certain conditions.
  • clip still isn’t supported.
  • There were no improvements to the display property, meaning CSS table displays still aren’t supported.
  • Some margin bugs remain.
  • outline still isn’t supported.
  • There are still a lot of problems with the vertical-align property.
  • There were no improvements to the print properties.
  • Alternate stylesheets still aren’t supported (a requirement for CSS conformance).
  • There is still no option to disable author stylesheets (another requirement for CSS conformance).
  • Other than basic selectors, there were no improvements to CSS 3 support. There is still no support for any CSS 3 pseudo-classes or pseudo-elements.

A lot of painful problems were fixed, but Internet Explorer is still miles behind the competition in CSS support. According to the Web Devout tables, Internet Explorer 7’s CSS 2.1 support has risen from 54% to 65%, compared to Firefox 1.5’s 93% and Opera 8.5’s 94%. Due to the added CSS 3 selector support, overall support for CSS 3 changes has risen from 7% to 13%, compared to Firefox 1.5’s 28% and Opera 8.5’s 8%.

The lack of support for inherit, :before and :after pseudo-elements, and table display values will continue to be thorns in the sides of web developers. Hopefully these problems will be fixed in Internet Explorer 8, which is planned for release within one year of the Internet Explorer 7 release.

I will test DOM support improvements next, although I haven’t heard of any changes in that area.

Edit: As a reminder, Microsoft has previously announced that the latest build of Internet Explorer 7 is layout complete, meaning no significant changes will be made to the webpage layout engine until the final release.