RE: CSS 2.1 - 10.3.3 - Block-level, non-replaced elements in normal flow

Boris,

You're totally right! I was looking at this section too locally, hence
overlooking the min/max adjustments.

Thanks!

Rossen Atanassov

-----Original Message-----
From: Boris Zbarsky [mailto:bzbarsky@MIT.EDU] 
Sent: Tuesday, November 06, 2007 10:20 AM
To: Rossen Atanassov
Cc: www-style@w3.org
Subject: Re: CSS 2.1 - 10.3.3 - Block-level, non-replaced elements in
normal flow

Rossen Atanassov wrote:
> <div style="width:0px;">
>     <div style="margin:10px;">text</div>  <- - This is the block-level

> element I want to apply these rules to.
> 
> </div>
> 
> 1.        First statement does not apply since the width is 'auto'
(from 
> its initial value)

Correct.

> 2.       Second statement does not apply for the very same reason

Correct.

> 3.       Third rule does apply since we have exactly one value of 
> 'auto', namely the width. So the spec suggests that value follows from

> the equality above, which would make the used width to be negative
value 
> (-20px).

You're ignoring the effect of min-width.  Since the computed value of
min-width 
is always non-negative, the list in section section 10.4 applies:

    1. The tentative used width is calculated (without 'min-width' and
       'max-width') following the rules under "Calculating widths and
margins"
       above.

This gives "-20px" for the tentative used value.

    2. If the tentative used width is greater than 'max-width', the
       rules above are applied again, but this time using the computed
       value of 'max-width' as the computed value for 'width'.

This has no effect.

    3. If the resulting width is smaller than 'min-width', the rules
       above are applied again, but this time using the value of
       'min-width' as the computed value for 'width'.

This reapplies section 10.3.3 with a computed value of 0 for the width.
At that 
point, the third rule in 10.3.3 no longer applies.  More importantly,
the first 
rule applies: the situation is over-constrained, so the margin-right
value ends 
up as -10px.

I think that covers your first question.

> However, section CSS2.1 - 10.2 Content width: the 'width' property, 
> states that "Negative values for 'width' are illegal."

That has to do with the specified value.  That is, having a declaration
like:

   width: -100px;

is illegal, and the declaration should be discarded by the parser.

> 2.       What about other properties such as padding-left|right and 
> border-left|right, are these allowed to become negative following
these 
> rules?

Since those can never have auto computed values, I don't see how they
could 
"become" anything.  The only values that can be "auto" by the time
10.3.3 is 
being applied are width, margin-left, and margin-right.

-Boris

Received on Tuesday, 6 November 2007 19:59:54 UTC