IE css empty div extra padding bug

Most webdevelopers will have been in the situation that you want to use a background-image in an empty div and there is this whitespace padding at the bottom of the image.
Your stylesheet may look like

#mtdiv {
    position:relative;
    height:8px;
    width:12px;
    background-image: url(/images/bg_small.png);
    background-repeat: no-repeat;

    /* dit i tell you i hate IE? */
    border:1px solid;
}

and you html like:

<div id="mtdiv"></div>

And when measuring your screenshot in photoshop you have a 4px gap underneath the background image. The height is not 8px as you dictated, but 12px!

Gdamn, ok.

The answer lies in inheritance:
When e.g. the body tag has a font-size formatting rule, the #mtdiv will inherit the font size. IE is the only browser that treats an empty div as if there was a whitespace between the tags. Well, rarities in IE are nothing new, but come on!. Fortunately the fix to this problem is very simple:

#mtdiv {
    position:relative;
    height:8px;
    width:12px;
    background-image: url(/images/bg_small.png);
    background-repeat: no-repeat;

    font-size:0px; <-- add this to get rid of font-size inheritance.
}

This really had me gooing for a while. But yeey, in the end, this fixxed a lot of “why is there this x pixel difference in IE compared to all the other browsers!”.

Comments are closed.