- From: Mike via GitHub <sysbot+gh@w3.org>
- Date: Sat, 08 Oct 2016 18:08:59 +0000
- To: public-css-archive@w3.org
MadeByMike has just created a new issue for
https://github.com/w3c/csswg-drafts:
== [css-values] [css-fonts-4] Native map() function in CSS ==
CSS is in need of a native map() function. This is increasingly the
case with what I am reading about variable fonts in CSS. A map
function is the glue that could bring it all together.
In many cases variable font properties are meant to adjusted according
to the viewport resolution. We can currently do this for some
properties with calc(). i.e.
```
font-size: calc(16px + 8 * ((100vw - 400px) / 400));
```
The above example will map a font-size between 18px and 24px when the
viewport is between 400 and 800px. This has already proven to be very
useful but it has limitations. It's linear, not interoperable, it only
works with some unit-types, it doesn't work with real numbers or
percentages and it's also somewhat difficult to understand.
I'm concerned that CSS 4 `font-variation-settings` values won't be
able to be transitioned in this way which for me is one of the main
use-cases.
I'll give some detail of how I think it could\should work:
A map() function could be used as component value. Similar to calc()
it could be used wherever <length>, <frequency>, <angle>, <time>,
<percentage>, <number>, or <integer> values are allowed. But equally
it could work for <color> values and any other values that can be
interpolated or animated.
One possible syntax of a map() function is:
map(<min-viewport>, <min-value>, <max-viewport>, <max-value>,
[<easing>])
The map() function interpolates between the min-value and the
max-value, across the specified viewport range and according to the
easing function. The default easing function should be linear, and
accepts CSS `transition-timing-function` values.
Here are some examples of how a map() could be used with
`font-variation-settings`:
```
.example {
font-variation-settings: "wght" map(600px, 0.5, 1000px, 0.7);
}
.example {
font-variation-settings: "wght" map(40em, 0.5, 80em, 0.7, ease-in);
}
.example {
font-variation-settings: "wght" map(600px, 0.5, 1000px, 0.7,
cubic-bezier(0.250, 0.250, 0.750, 0.750) );
}
```
Please view or discuss this issue at
https://github.com/w3c/csswg-drafts/issues/581 using your GitHub
account
Received on Saturday, 8 October 2016 18:09:06 UTC