Michael Leibson wrote:

> Hi again, Alan (and anyone else interested in this topic);
>
> I've been trying to understand the satzansatz article, as well as other 
> articles to which it refers.
> One of these is the article by Markus Mielke, of MS, " "HasLayout" Overview", 
> at 
> http://msdn.microsoft.com/library/default.asp?url=/library/en-us/IETechCol/cols/dnexpie/expie20050831.asp.
>
> Among other things, that article seems to say that once a CSS property 
> triggers IE's hasLayout, the affected
> block element is given a new 'block formatting context', which I take to mean 
> that -- in terms of some parameters,
> like dimensions --  it no longer refers to those of its parent, but to those 
> of some previous ancestor (eg,
> body, rather than containing div).  If so, this might be the explanation why 
> the margins of my absolutely positioned "p"
> didn't operate in relation to its containing div, but instead extended past 
> that parent.
>
> Am I on the right track??

Hi Michael

Yes it may have to do with hasLayout. For the example you are referring to, you 
need to give IE a little extra like a right offset.

p {
        margin: 10%;
        position:absolute;
        right:0;
}

By adding right:0;, the paragraph margin right edge will sit against the right 
edge of it's containing block, the container. Using pixels instead of a 
percentage.

p {
        margin: 40px;
        position:absolute;
}

Now IE will observe the right margin. Remember that absolute positioning is a 
CSS property and value that creates a new 'block formatting context' [1] and in 
IE causes the element to gain hasLayout.


> If I am, then it would seem to me that the most direct workaround/hack would 
> be to somehow hide the
> p's {position: absolute;} and the WIDTH, and every other CSS-provoked 
> hasLayout trigger from IE,
> but not from all other browsers -- yet still somehow convey those directives 
> to IE in a 'less offensive' manner.
>
> Am I still headed in the right direction?
>
> If so, could you (or anyone else interested in this topic) direct me to a 
> site that not only gives such a hack,
> but also explains it?
>
> Thanks, in advance, for any insights you'd care to share!
>
> - Michael

The total reverse, give IE as much hasLayout as it needs, but then no more. 
IEs' rendering engine, uses the subtle layout triggers to render CSS layouts 
right. Absolute positioning, floats, a box with a dimension, etc, etc, would 
not work if the element didn't gain hasLayout. Don't be discouraged, but be 
challenged. Just develop various good layout techniques, and you will learn to 
make IE submissive to you at each step. Along the way, you will also come to 
learn the many fixes for IE by just giving an element hasLayout. These are the 
hacks/fixes which you should be seeking.

[1] <http://www.w3.org/TR/CSS21/visuren.html#block-formatting>

Kind Regards, Alan

______________________________________________________________________
css-discuss [EMAIL PROTECTED]
http://www.css-discuss.org/mailman/listinfo/css-d
IE7 information -- http://css-discuss.incutio.com/?page=IE7
List wiki/FAQ -- http://css-discuss.incutio.com/
Supported by evolt.org -- http://www.evolt.org/help_support_evolt/

Reply via email to