W3C home > Mailing lists > Public > www-style@w3.org > March 2000

Visual effects errata

From: Matthew Brealey <webmaster@richinstyle.com>
Date: Thu, 16 Mar 2000 15:15:27 -0800
Message-ID: <38D16B0F.3589@richinstyle.com>
To: www-style@w3.org
CSS2 states:

<q>
auto
The clipping region has the same size and location as the element's
box(es).

In CSS2, the only valid <shape> value is: rect (<top>, <right>,
<bottom>, <left>) where <top>, <bottom> <right>, and <left> specify
offsets from the respective sides of the box.
User agents may support rect() with or without commas.
</q>

But it doesn't say what the element's box is, nor what the offsets are
relative to - padding, border or content (this is the correct one) edge!


And:

<q>
When this value is specified and the target medium is 'print' or
'projection', overflowing content should be printed.
</q>

is wrong on three counts:

1. 'Due to rapidly changing technologies, CSS2 does not specify a
definitive list of media types that may be values for @media.'
2. The 'handheld' and 'tv' media can be paged - the correct phrase is
'and the target medium is paged'.
3. It does not specify how or where the content should be printed -
preferable is 'this value should be treated as 'visible''.

<q cite="http://www.w3.org/TR/REC-CSS2/visufx.html#overflow">
This property specifies whether the content of a block-level element is
clipped when it overflows the element's box (which is acting as a
containing block for the content).
</q>

<q>
The element's ancestors may also have clipping regions (in case their
'overflow' property is not 'visible'); what is rendered is the
intersection of the various clipping regions.
</q>

This is incorrect. Overflow does not concern itself with ancestors, but
with containing blocks. For example, given:

<div style="overflow: hidden; clip: rect(150px, 0px, 0px, 0px); height:
400px; width: 400px">
<div style="position: absolute; /* top: auto and left: auto are implied,
meaning that the element is withdrawn from normal flow, but is not
shifted at all */ overflow: hidden; clip: rect(0px, 0px, 200px, 0px);
height: 400px; width: 400px">
</div>
</div>

the containing block of the inner DIV is the root element (there is a
very serious error/problem here, incidentally). It should not be
affected by the outer DIV, and it would be as wrong to consider the
intersection of the clipping regions as it would in:

<div style="overflow: hidden; clip: whatever">
</div>
<div style="overflow: hidden; clip: whatever; margin-top: -40px">
</div>


There is a more general problem here relating to what overflow actually
does.

Something to the following effect is required:

'The value of the 'overflow' property for a containing block determines
how the content that overflows the content area of that containing block
is treated. Some examples should prove illuminating:
<DIV style="overflow: hidden">
<DIV style="position: absolute; top: 10px; right: 10px">
</DIV>
</DIV>
In this example the overflow: hidden on the outer DIV does not affect
the absolutely positioned inner DIV, since its containing block is the
root element.
<DIV style="overflow: hidden">
<DIV style="margin-top: -50px">
Not hidden
</DIV>
</DIV>
In this example the text is not hidden since the margin collapses
between the two DIVs, and is therefore 'outside' them both.'
----------------------------------------
Please visit http://www.richinstyle.com
Featuring:  CSS bug guides (more than 1000 CSS bugs) CSS Masterclass
HTML 4 guide    CSS 1 guide    CSS 2 guide   Web-safe colorizer 
CSS bug table     More than 300 CSS test pages
Received on Thursday, 16 March 2000 10:12:23 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Monday, 27 April 2009 13:54:04 GMT