HasLayout concept explained - Learn how to exploit IE’s „layout”
What the hell is layout? Layout is an Internet Explorer proprietary concept that controls both size and position of elements. IE uses “layout” to reduce its processing needs. In modern browsers, like FFox, Safari and Opera each element is responsible for it’s own size and position. In IE 6 and below this would cause extreme problems related to performance. That’s why IE gives “layout” only to elements that really need it. Anyway, “layout” really affects CSS designs, so it’s important to know how to deal with it.
What elements do have layout? Elements that have layout include: bodytable, tr, td, input, select, textarea, button, img, marquee, hr, inframe(don’t use this, please :) ), object, applet
How to give layout to an element? Using one of these CSS properties: float: left/right; position: absolute; display: inline-block; width/height;
Problems caused by “layout“: Elements with layout incorrectly size themselves: Let’s say you have a div with width:10px; Write some text inside it and set it’s size to 30px. Also set border: 1px solid black; In this situation the text should flow out of the div, but in IE the div incorrectly expands. This shows that IE uses width like a min-width.
Absolute positioned elements within a relative container: Let's say that you have some absolutely positioned elements inside a relatively positioned ancestor. In IE, instead of being positioned relative to the ancestor, these elements will get positioned relative to the viewport. This bug is caused by IE's internal "hasLayout" feature. Elements with relative position are not considered to have "layout". A simple solution for this bug would be to set a width or height, to force the element to have layout. Anyway, maybe sometimes you will not know the dimensions of the element, so you can use the following hack:
/* Hide from Mac \*/ * html.element { heighT: 1px; } /* End hide from Mac */
About the Author
Lighe Alex is a high quality web development articles writer. Some of its work can be found at chml srucnoc online.
Tell others about
this page:
Comments? Questions? Email Here