Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

CSS - Internet Explorer and the <main> tag background

I have a pretty simple layout which renders fine in both Firefox and Chrome, but Internet Explorer (version 11) seems to be unable to render any kind of background color for the <main> element.

I have the <main> element as a child of the <body> element and neither background or background-color seem to make any difference. <main> will always have the same background as <body>. I haven't found anything that says whether or not this is a bug in IE.

Check out this jsfiddle using Internet Explorer to see what I mean.

Obviously, I could just replace <main> with <div id="main"> and update my CSS selectors but I want to understand why this is happening.

like image 953
hololeap Avatar asked Oct 05 '14 20:10

hololeap


1 Answers

IE11 does not support the <main> element natively. You can introduce support for it by either using a script like Modernizr, or a single harmless line of JS:

document.createElement('main');

The element will not be inserted in the DOM, but it will now be recognized as a proper element by IE. After this, it still does not have proper styling. Add the following to your CSS:

main {
    display:block;
}

And all will be fine. The reason you currently see it as not getting any content because IE does not add it to the box model without these 2 steps, and as such it gets no 'layout' or 'size'. It's just invisible, that's why you see the body. It does contain elements, which get rendered (sort of) correctly based on the top left coordinate of the <main> element.

like image 94
Niels Keurentjes Avatar answered Sep 17 '22 16:09

Niels Keurentjes