- From: Bert Bos <bert@w3.org>
- Date: Wed, 12 Oct 2011 14:53:20 +0200
- To: W3C style mailing list <www-style@w3.org>
An idea for the "Values and units" module: random values. (For the record: The idea is due to a colleague of mine, François Daoust.) Properties with numeric (real) values are probably easiest to give random values, e.g., like this: P { margin-left: calc(2em + random * 1em) } SPAN { transform: rotate(calc(random * 6deg - 3deg)) } Properties with integer values, keywords, colors, or strings are a bit harder, at least in terms of syntax, but not impossible. Maybe they are also less interesting in practice. Random selectors and random media queries are probably not useful. A single, uniform random distribution is probably enough, but a normal (Gaussian) distribution could also be added. The Specified Value in this case is the keyword 'random' and the Computed Value is a specific number. In other words, child elements inherit a concrete value and do not compute a new random value themselves. There are many possibilities for the syntax, I don't know yet which one would be easiest to remember: A) The keyword 'random', which produces a number between 0 and 1 (both inclusive) with uniform distribution. It is only recognized within calc(), min() and max(), i.e., something like 'counter-increment: random' or 'font-family: random' would still refer to a counter called "random" and a font called "random" just as they do now. B) A functional notation 'random(<number>)', which produces a random number uniformly distributed between 0 and <number> (both inclusive). The number may not be negative. The notation may only occur inside calc(), min() and max(). C) A functional notation 'random(<number> [ , <number> ]? )', which stands for a random number uniformly distributed between the first and the second number (both inclusive). If the second is missing, it is 0. The numbers do not have to be in increasing order. The notation may only occur inside calc(), min() and max(). D) A functional notation 'random(<integer>)' which produces a random integer, rather than a real number, between 0 and <integer> (both inclusive). The <integer> must not be negative. The notation may only occur inside calc(), min() and max(). This one is maybe the most flexible, as you can either randomly choose between a small number of discreet values ('random(1)' gives either 0 or 1) or simulate real numbers ('calc(random(2147483648) / 2147483648)'). You could create dice in CSS with this... Etc. Bert -- Bert Bos ( W 3 C ) http://www.w3.org/ http://www.w3.org/people/bos W3C/ERCIM bert@w3.org 2004 Rt des Lucioles / BP 93 +33 (0)4 92 38 76 92 06902 Sophia Antipolis Cedex, France
Received on Wednesday, 12 October 2011 12:53:44 UTC