Re: [css3-values] calc()'s <number-multiplicative-expression> incorrect

On Wednesday 2009-12-23 11:24 -0500, L. David Baron wrote:
> However, I think if we want the spec to allow division by values,
> it's better not to use the grammar to do the dimension-checking.
> For example, the current grammar allows these:
>   (3em / 100%) * 3em
>   3em / 100% * 3em
>   3em * (3em / 100%)
> but disallows this:
>   3em * 3em / 100%
> which seems very strange.  I would much rather they either be all
> allowed or all disallowed.

Actually, there's a bit of a problem with division-by-values that I
just noticed (while trying to implement division by values with my
proposal for allowing all 4 of the above, although the problem is
present even without my changes).

The spec (editor's draft, [1]) currently requires rejecting values
that involve division by zero at parse time.  (Parse time rejection
is better in CSS since it allows for a better fallback mechanism:
fallback to the next highest declaration in the cascade.)

However, if we allow division by values, determination of what is
division by zero can't be made at parse time.  For example:
  width: calc(3em / (3em - 30px) * 20px);
involves division by  zero when the font size is 10px (so 3em - 30px
is 0), but otherwise does not.

It's not clear to me what to do about this.

-David

[1] http://dev.w3.org/csswg/css3-values/#the-calc-function

-- 
L. David Baron                                 http://dbaron.org/
Mozilla Corporation                       http://www.mozilla.com/

Received on Saturday, 2 January 2010 02:16:56 UTC