Aug 5 2009

IE Specific Stylesheets

ie-only-css

Internet Explorer has it’s problems with CSS (OK, it’s pretty much awful) but if you are worth your salt as a CSS coder, you should be able to deal with it. I am of the opinion that you can handle anything IE can throw at you without a ton of hacks and without having alternate stylesheets. But if you (or your client) really wants to get pixel-perfect results cross-browser, you may need to specify alternate stylesheets for different browsers, especially Internet Explorer.

Here is the basic technique for an IE-Only stylesheet:

<!--[if IE]>
<link rel="stylesheet" type="text/css" href="ie-only.css" />
<![endif]-->

The opposite technique, targeting only NON-IE browsers:

<!--[if !IE]>
<link rel="stylesheet" type="text/css" href="not-ie.css" />
<![endif]-->

If you need to get down and dirty with specific versions of IE, here are a few examples.

IE 7 ONLY:

<!--[if IE 7]>
<link href="IE-7-SPECIFIC.css" rel="stylesheet" type="text/css">
<![endif]-->

IE 6 ONLY:

<!--[if IE 6]>
<link rel="stylesheet" type="text/css" href="IE-6-SPECIFIC.css" />
<![endif]-->

IE 5 ONLY:

<!--[if IE 5]>
<link rel="stylesheet" type="text/css" href="IE-5-SPECIFIC.css" />
<![endif]-->

IE 5.5 ONLY:

<!--[if IE 5.5000]>
<link rel="stylesheet" type="text/css" href="IE-55-SPECIFIC.css" />
<![endif]-->

VERSION OF IE VERSION 6 OR LOWER: (I find this one pretty handy)

<!--[if lt IE 7]>
<link rel="stylesheet" type="text/css" href="IE-6-OR-LOWER-SPECIFIC.css" />
<![endif]-->

Why would you want to use these conditional stylesheets?

  • It’s more future-proof than hacks. A new browser or a new version of a browser may come along one day that wrecks up interprets your hacks in a strange way and will mess up your styling. That’s no good! For example, there is a really effective min-height hack out there right now, but who is to say that will work forever? The solution here would be to declare a min-height like normal in your real stylesheet, then declare a height (the workaround) in an IE-6-and-Lower stylesheet.
  • It keeps your CSS clean. And valid! If having CS code that passes W3C snuff is important to you, this is the way to go
  • Expandability. If a new browser comes along that you want to also support, you can create a conditional statement and stylesheet for that and you are all set, instead of re-tweaking your existing stuff.

If you think it is overkill for you to have IE-Specific stylesheets, you can use hacks to make things happen. Again, I don’t really recommend this, but this is how it’s done.

IE-7 ONLY:

* html #div {
    height: 300px;
}

NON IE-7 ONLY:

#div {
   _height: 300px;
}

HIDE FROM IE 6 AND LOWER:

#div {
   height/**/: 300px;
}

HIDE FROM IE 6 AND LOWER: (another way)

html > body #div {
      height: 300px;
}

Jul 9 2008

IE6 and IE7 Running on a Single Machine

Many of you have asked how to run IE6 and IE7 in a side by side environment. As Chris Wilson blogged about early this year, it’s unfortunately not so easy to do. There are workarounds, but they are unsupported and don’t necessarily work the same way as IE6 or IE7 would work when installed properly. As Chris said, the best way to use multiple versions of IE on one machine is via virtualization. Microsoft has recently made Virtual PC 2007 a free download; we’ve taken advantage of that by releasing a VPC virtual machine image containing a pre-activated Windows XP SP2, IE6 and the IE7 Readiness Toolkit to help facilitate your testing and development. The image is time bombed and will no longer function after Early September, 2008. We hope to continue to provide these images in the future as a service to web developers.

Now you can install IE7 on your main machine for development, and get all the advantages of IE7, like the RSS platform, native XMLHTTP stack, and improved security, while still running IE6 simultaneously in the VPC on the same computer. Most importantly, you don’t even have to buy an additional Windows license. The VPC image runs in a virtual machine that offers all of the functionality of a full IE6 installation without giving it any access to its host machine’s hard drive, registry, etc. You can make as many modifications as you want to the virtual machine without affecting your host installation at all.

This download page contains four separate VPC images, depending on what you want to test.

  • IE6-XPSP2_VPC.exe contains a Windows XP SP2 with IE6 VHD file
  • IE7-XPSP2_VPC.exe contains a Windows XP SP2 with IE7 VHD file
  • IE8B1-XPSP2_VPC.exe contains a Windows XP SP2 with IE8 Beta 1 VHD file
  • IE7-VIS1.exe+IE7-VIS2.rar+IE7-VIS3.rar contain a Vista Image with IE7 VHD file.

System Requirements for VPC 2007

CPU Speed: An x64-based or an x86-based computer with a 400 MHz or faster (1 GHz recommended) processor with L2 cache

  • Supported Operating Systems: Windows Server 2003 x64 editions; Windows Server 2003, Standard Edition (32-bit x86); Windows Vista 64-bit Editions Service Pack 1; Windows Vista Business; Windows Vista Business 64-bit edition; Windows Vista Enterprise; Windows Vista Enterprise 64-bit edition; Windows Vista Service Pack 1; Windows Vista Ultimate; Windows Vista Ultimate 64-bit edition; Windows XP Service Pack 2; Windows XP Service Pack 3
  • Processor: AMD Athlon/Duron, Intel Celeron, Intel Pentium II, Intel Pentium III, Intel Pentium 4, Intel Core Duo, and Intel Core2 Duo
  • RAM: Add the RAM requirement for the host operating system that you will be using to the requirement for the guest operating system that you will be using. If you will be using multiple guest operating systems simultaneously, total the requirements for all the guest operating systems that you need to run simultaneously.
  • Available disk space: To determine the hard disk space required, add the requirement for each guest operating system that will be installed.

Get more information on Virtual PC 2007
Download Virtual PC 2007
Download the Internet Explorer 6 Testing VPC Image