- From: Boris Zbarsky <bzbarsky@MIT.EDU>
- Date: Tue, 06 Nov 2007 12:19:36 -0600
- To: Rossen Atanassov <ratan@windows.microsoft.com>
- CC: www-style@w3.org
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 18:20:02 UTC