- From: Christoph Päper via GitHub <sysbot+gh@w3.org>
- Date: Fri, 13 Jan 2017 12:05:30 +0000
- To: public-css-archive@w3.org
Crissov has just created a new issue for
https://github.com/w3c/csswg-drafts:
== [css-values] Functions to select one value from a set: med(), mod()
==
In #544, minimum and maximum functions have been accepted for [CSS
Values Level 4](https://drafts.csswg.org/css-values/#calc-notation).
min(100px 10em 1vw)
max(100px 10em 1vw)
Both functions select a single computed value – i.e. the smallest and
largest, respectively – from a set of 1 to _N_ values (which may be
results of nested `calc()` expressions). This cannot be achieved with
Level 3 `calc()` syntax. There are at least two other useful statistic
measures that work the same: **mode** chooses the most frequently
occuring computed value and **median** chooses the computed value with
the same number of smaller and larger sibling values. .
mod(100px 10em 1vw)
med(100px 10em 1vw)
mod(100px 10px 10px) /* = 10px */
med(100px 10px 1px) /* = 10px */
The **mode** function may benefit from an optional value to specify
the precision, i.e. tolerance limits, when comparing (and returning)
computed values.
mod(100px 10em 1vw, 1pt)
This could effectively be reused as a ‘round to nearest multiple’
function.
mod(101px, 1pt) /* = 76pt ≈ 101.33px */
mod(100px, 1pt) /* = 75pt = 100px */
mod(99px, 1pt) /* = 74pt ≈ 98.67px */
mod(10px, 1pt) /* = 8pt ≈ 10.67px */
mod(1px, 1pt) /* = 1pt ≈ 1.33px */
The specification must also say what to do if no computed value occurs
more often than another. It may fall back to the arithmetic mean of
all equally frequent values.
mod(100px 10px) /* = 55px? */
The **median** function needs to be specified for an even number of
values as well, i.e. when there is one above and one below but none at
the center of the set. It may fall back to the arithmetic mean of the
two values closest to the true median.
med(100px 10px) /* = 55px? */
med(100px 10px 10px) /* = 55px? */
med(100px 100px 10px) /* = 55px? */
If the values closest to the center do not occur equally often, the
median could be weighted instead.
med(100px 10px 10px) /* = 40px? */
med(100px 100px 10px) /* = 70px? */
Please view or discuss this issue at
https://github.com/w3c/csswg-drafts/issues/905 using your GitHub
account
Received on Friday, 13 January 2017 12:05:36 UTC