UPDATE: Paul Thurrott, a Windows journalist, has featured some commentary on our post over at his Winsupersite. Check out his post, and the great discussion below it! Thanks for the input, Paul!

Internet Explorer 8 is out, and a lot of people – technically sophisticated and otherwise – are wondering what, if anything, this means for the web. As professional web developers, our view is that while Internet Explorer 8 is an incremental improvement over its predecessor, we’re mostly disappointed by its lack of progress.

Having read a variety of takes on IE8, we were inspired to write this article for two audiences. First, there’s little in the way of concrete examples and clear explanations for a large swatch of the business technology decision makers (that many of our clients represent) who are often savvy about technology, but look to organizations like us for a deeper understanding of the strategic, cost, and technical significance. Second, reading the comments on tech savvy websites like Neowin, Digg, and the Winsupersite have me concerned that there’s a growing and false notion that IE8 is just great, and its rendering problems are the result of web developers writing non-standard code optimized for IE7.

To understand why IE8 is a legitimate disappointment, we need to start by providing background on how different browsers impact web development, both from a cost and design standpoint. If you think you already have a handle on this, you can skip ahead to our 3 straightforward examples of IE8 disappointments.

Background: Why Different Browsers Matter

In our world of web development, there’s plenty of inside baseball ranting about “inconsistent support for web standards” among the major web browsers: Internet Explorer, Firefox, Apple Safari, and to lesser extents, Opera and Google Chrome. Essentially, inconsistent support for standards means that when professional HTML and CSS developers turn graphical storyboards into actual web layouts, they encounter inconsistent and problematic results when reviewing the same code in different browsers, even when strictly obeying modern standards.

To make matters worse, catering to browser market share can mean catering to an 8 year old browser, released before some of the best standards were even drafted (I’m looking at your Internet Explorer 6, and your 25% share).

Professional web developers work around inconsistent standards support in two ways. Well, two and a half ways.

When it comes to the modern browsers (IE7+, Fx2+, Safari 3+), we mostly cater to the lowest common denominator. For example, Safari supports on the fly rendering of font shadows, but IE7 and Firefox 3 do not. As a result, if the design calls for a heading with a shadow, we have a choice: spend time and money creating (and maintaining) images for all of these headings, or walk back the design. Either approach is a degradation in potential value. The most infamous example of design / browser trade off is font type, which we’ll discuss in our examples.

Alternatively, developers can write alternative code based on the user’s browser. With the “modern” browsers, there are only a few reasons to do this (at least for capable developers), and most of those special lines of code do not conflict with each other or add significantly to the code’s heft (as we’ll discuss in our translucency and rounded corners examples). In the case of one IE6, however, there are so many inconsistencies and glitches that almost every site we develop has a special stylesheet only for IE6 users. It goes without saying that this adds time (=cost).

The “half way” is not so much a way of addressing the differences as it is a way of accepting the differences. That is, the notion of “failing gracefully.” The idea here is that if a browser like IE6 simply can’t support a non-critical feature (a “nicety”) without significant additional cost and effort, we may elect to leave a feature out, so long as it does not seriously degrade the user experience (while providing some value for 75% of the audience).

For example, if a WordPress administrator looks at the admin console from within IE6 or IE7, you’ll notice that the containers have sharp edges, which appear rounded in Firefox and Safari. As we’ll discuss, Firefox and Safari support a rounded corners style that makes it quick and painless. Adding rounded corners to IE6+ is considerably harder, and really, the cost of this value-add is not in sync with its end user value.

3 concrete examples of how IE8′s “behind the times” standards cost time and quality

Here are three very simple examples of standards IE8 still does not support, and what they mean for cost and design potential.

1. Rounded corners made simple

The first example is a favorite, because it’s a perfect illustration of a feature that can be added very quickly and easily in current versions of all major web browsers except IE8 and earlier, with a time consuming “lowest common denominator” solution.

Example of rounded cornersTo the right, you can see an example of a sidebar element from a site currently in development. Notice the rounded corners, both around the containing box, and the box heading. With Firefox, Safari, and Chrome, we were able to use the “rounded-corner” attribute (using non-conflicting browser specific attributes to ensure rendering) to do this quickly, and in a way that is easy to maintain. Here’s the CSS for the containing box:

div#sidebar div.module {
    margin-bottom: 13px;
    padding: 3px;
    border: 1px solid #939393;
    -moz-border-radius: 5px;
    -khtml-border-radius: 5px;
    -webkit-border-radius: 5px;
    border-radius: 5px; 
}

We specified a general border style; 1 pixel thick, solid (as opposed to, say, dotted), and with a hex color of 939393, which is a shade of gray. To give it rounded corners, we specified a “border-radius” of 5 pixels. As we indicated, we included browser specific versions of the border radius property (i.e. -moz- for Mozilla Firefox) to ensure compatibility with some versions of those browsers that included their own implementation of rounded corners before the formal standard was finalized.

For the heading, we did something similar, and added a 1 pixel wide x 25 pixels tall background image (the gradient dark to light gray gradient), and had it repeat horizontally.

div#sidebar div.module h3 {
  color: #fff;
  font: 1.4em Tahoma, Geneva, sans-serif;
  background: transparent url(images/sidebar_h3.gif) repeat-x;
  -moz-border-radius: 3px;
  -khtml-border-radius: 3px;
  -webkit-border-radius: 3px;
  border-radius: 3px;
  height: 25px;
  line-height: 25px;
  overflow: hidden;
  padding: 0px 10px;
}

Border Radius - not in IE8To the right you can see what this looks like in IE8 (and earlier).

In this specific instance, the  client decided it was not worth the extra expense to provide rounded corners to IE users. There are a few different approaches we could take, had we chosen to cater to the lowest common denominator. All of them, effectively, involve cutting up images with rounded corners. Below you can see one rough illustration of how we might have approached that.

Rounded corners using images

Whereas the CSS approach probably would have taken a few minutes to create, and a few seconds to tweak or change later, the IE approach takes many times longer to piece together, and nearly as long to make any notable change. And Lord help you if you need to make changes and you lost your source image files!

Those of you using IE right now, take heed. Expect more web developers with cost-conscious customers to “cut corners” (pun intended) with IE, and slightly degrade your experience.

2. Achieving some overdue font diversity

The biggest disappointment of creative designers everywhere is the lack of support for anything other than a handful of standard fonts for website copy (outside of kludges like sIFR, or images, neither of which are prudent outside of some headings). Therefore, there has been some excitement around the recent emergence of a new style property, “@font-face”, that will allow developers to support almost any font type in the future (although I admit I can already anticipate the licensing abuses and headaches).

Safari already has support for this property in its current release, and improves support in the Safari 4 beta. The forthcoming Firefox 3.5 (at beta 3, still dubbed 3.1) also adds full support. Here’s what the style definitions might look like to set a font for the entire page:

@font-face {
    font-family: "Alaska";
    src: url("bralarc0.TTF") format("truetype");
}
body,td,th {
    font-family: Alaska;
}

Here’s how this looks in Firefox 3.1 beta 3 (what will become Firefox 3.5):

@font-face in Firefox 3.1 beta 3

And here’s Internet Explorer 8:

@font-face in Internet Explorer 8

Now, to be fair and honest here, Microsoft does support a limited implementation of @font-face (and actually has for a long time).

The first problem is that IE8 only supports the completely proprietary “Embedded Open-Type Fonts” (EOT) format, whereas everyone else uses the common “True-Type  Font” (TTF) standard as well as the “Open-Type Font” (OTF) PostScript standard. So frustration #1 is getting fonts into the Microsoft-only EOT format. Microsoft does provide a nightmare of a tool to get  TTF into EOT. The tool does not support OTF, however, and there’s no easy way to get OTF to TTF either.

Assuming one doesn’t give up during the conversion process, here comes frustration #2: because IE8 does not correctly support the CSS property, one cannot (as they can in other browsers) just provide a comma delimited list of fonts, including both the EOT file and TTF file. Critics of IE proprietary styles (as a supposed cause of IE8 issues) take note – to achieve custom font faces in both IE8 and with every other browser, one has to write special, IE-only code that overrides the previous (standards compliant) @font-face value.

What’s the impact here? Developers can incur more cost implementing a non-standard IE specific solution, can choose to let IE fail gracefully over to the closest standard font, or (very likely in many instances) will continue to ignore the possibilities of diversified font types for the foreseeable future.

(more on cross browser @font-face support)

3. Opacity / alpha channels

Support for translucent / semi-transparent / opaque / whatever-you-want-to-call-it elements, particularly backgrounds, has a lot of obvious use cases. We frequently use a translucent background effect in fly-out navigation bars. Likewise, there are good use cases for elements on a page being entirely translucent; backgrounds, content, and all.Example of a semi-transparent background

Translucent backgrounds aren’t that painful, mostly because we “cater to the lowest denominator” and use a semi-transparent PNG background image (1 pixel x 1 pixel repeated) to create the effect in a way supported by all the major players except for IE6. In that case, we “fail gracefully” by providing a solid, non-translucent background (which, before anyone brings it up, we find superior to a well known JavaScript hack that tends to wreak other kinds of havoc in complex sites).

The latest stable version of Safari, and the forthcoming release of Firefox 3.5 would make semi-transparent backgrounds even easier with support for a “RGBA” (or “Red/Green/Blue/Alpha“) value for the background property. So, if I wanted to give an element a red background color with 50% transparency (alpha), I could simply set its style like so:

<div style="background: rgba(255, 0, 0, 0.5);"></div>

Easy to change and maintain, easy to implement. But not supported even in IE8. Looks like we’re stuck with background images for a long while.

But that’s not the worst of it. What if we want to make an element completely translucent; background, content and all?

Earlier, we mentioned that there are often properties or lines of code that are browser specific, but are simple and do not conflict with one another. Browsers compliant with modern standards, including released versions of Firefox and Safari, support the “opacity” CSS attribute (opacity: .5;). IE7 (and IE8) will ignore this style, but (with some exceptions we won’t get into here) we can add an IE7 specific style (filter: alpha(opacity=50);) that would create the same effect, and be ignored by other browsers.

However, in the new (and default) standards mode in IE8, that IE7 code is ignored. And IE8 still doesn’t support the simple “opacity” standard. Microsoft has given us a new way to achieve this style, and here it is in all its beauty:

-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";

I raise this example particularly because it’s a good case of the “IE8 rendering problems [coming from IE7] are a result of web developers not building their browsers to standards” myth.

Maybe by IE9 we’ll get “opacity”, a CSS 2.1 standard (we’re up to document standards for CSS 3, by the way), so we won’t have to update again.

(further detail on RGBA and IE8 opacity filters)

Why, exactly, this is disappointing

Productivity and economics, not necessarily today, but 2 years from now. It’s that simple.

As stated in the introduction, catering to the lowest common denominator means either taking more difficult approaches to product realization (time=cost), or removing desired features, at least for a portion of the audience (value reduction). Rounded corners is a great example of either possibility, and the font type is a great example of the latter. And remember – there are many more examples; these are just 3 of the most practical and concrete use cases developers like us deal with almost every week.

Now, regardless of fixes for issues like translucency, IE8′s impact in the short term is minimal. If you believe the statistics, IE users are the least likely to upgrade quickly anyhow (I suspect this is because most of the share, particularly of IE6, comes from business computers and slow to upgrade IT departments). IE6 and IE7 are a reality in our web development lives for the immediately foreseeable future.

What’s most disappointing is thinking about where we’ll be in 2 years.

The 6+ year stagnant development cycle between IE6 and IE7 was an understandable if regrettable consequence of their dominance of the web business, after driving Netscape out of business. With serious competition from Firefox, Apple’s Safari, and now even Google with Chrome, there was hope that Microsoft would be far more aggressive with IE8. The hope was that this aggressiveness would push the browser makers to standards oneupmanship (which we are getting from Apple and Mozilla), resulting in platforms and market share that, 2 years from now, would erase many of the obstacles web developers face in pushing design and development value to their limits.

We hope that Microsoft doesn’t wait another 2 years to build on IE8. Perhaps IE8 represents a baseline for a rebuilt underlying engine, and they can push out “point” updates (IE 8.1) more quickly that add better and more modern standards support.

That said, right now, far from being an innovator and challenger in the web space, Internet Explorer has become a hindrance to progress. I’ll go out on a limb here – if they just can’t keep up with the folks behind WebKit (the Chrome/Safari engine) and Mozilla (Firefox’s engine), maybe it’s time to abandon their own rendering engine and adopt an open platform like WebKit themselves.

30 Thoughts Contributed to “3 simple examples: why Internet Explorer 8 disappoints web developers”

  1. Pingback: Will HTML 5 replace Flash in the next 5 years? « C. Murray Consulting

  2. tom scott - April 17, 2010 at 10:10 pm Reply

    excellent article

    as most real developers, i’ve not been a fan of the “gates of hell” since the beginning. now, with this .net c# and other ms crap, it has made this a miserable business, unless, of course your working for satan himself. unfortunately, ignorance runs the world…

    • Oomph
      Oomph - April 30, 2010 at 11:03 am

      Tom – I have no real issue with C# and .NET, although their default front end output leaves a lot to be desired, and its not my personal preferred platform (though we do have some .NET / C# experts in house). It’s the front end technologies where Microsoft — and corporate IT departments that won’t push upgrades — hold up progress. Fortunately, IE9 looks like a huge step in the right direction. Too bad many businesses *still* running IE6 probably won’t upgrade.

  3. David Peers - May 15, 2010 at 3:38 pm Reply

    This blog helped me in narrowing down some problems with the latest version, Why do they always seem to leave out vital documentation when they release a new version? It may be minor to them but not for us! I’m sure i’m not alone either.

  4. Misha - June 30, 2010 at 1:05 am Reply

    Not only IE8 is lacking many standards, it runs like crap compared to FF, laggy scrolling and slow js animations.
    Sometimes it pushes my E8400 to 50% just by opening a big lightbox.

  5. Alexis - August 5, 2010 at 9:37 pm Reply

    @James Burton

    Jake Goldman is spot on with these examples and is on no “High Horse”. IE WASTES my time by requiring me to conform to their irregular methods.

    Perfect example:
    Looks OK in Fire Fox 3 http://www.microsoft.com/genuine/downloads/validate.aspx
    Looks awful in IE8
    They’ve also decide to now use Portable Image Format on there API documentation, what a laugh. How many hours have I lost converting client logos from a nice efficent png to gif for use in an statement. http://msdn.microsoft.com/en-us/library/aa983013.aspx
    IE9 beta doesn’t look that much better either.

    I’d love to see what sites you develop James they must be utter brilliance.

  6. Narendra - September 28, 2010 at 4:39 am Reply

    IE8 font above problem’s Solution:
    Override website font and color settings
    If you want to have the fonts and colors you specify in Internet Explorer to be used for all websites, regardless of the fonts that have been set by the website designer, follow these steps.
    1. In Internet Explorer, click the Tools button, and then click Internet Options.
    2. On the General tab, click Accessibility.
    3. Select the Ignore colors specified on webpages, Ignore font styles specified on webpages, and Ignore font sizes specified on webpages check boxes, and then click OK twice.

  7. Kilwag - February 25, 2011 at 10:20 pm Reply

    Good read. I’m excited about IE 9 but as I delve more into CSS3 Transitions I am anticipating a post here titled “3 simple examples: why Internet Explorer 9 disappoints web developers”

  8. remaps - March 25, 2011 at 2:13 am Reply

    its already been 2 years since this topic was published. I only read this one as of this moment. I’m a new web developer myself but i only began trying to understand the standards of web developing and all. I just want to say that Microsoft is very competitive about their products and what they engage to. What i don’t understand is with all the advancements their building, why is it so hard for them to implement the web standards for their browsers? I’m not a strong supporter of Microsoft but i do use their technology. I hope they realize its becoming a pain in the @ss trying to invoke their “own standards”.

  9. anna - August 28, 2011 at 6:07 am Reply

    great stufff

What do you think?

*(required)

Oomph is a full-service digital agency providing strategy, design & development and a host of other web services. A leader in WordPress and Drupal implementation, Oomph pushes the boundaries of today’s web platforms. Oomph has a diverse portfolio of non-profits, international corporations and publications. Team Oomph is always thinking creatively about the digital world. Oomph is located in Providence and Boston.