Increment CSS gradient stops
npm install @csstools/postcss-gradient-stop-increments-experimentalnpm install @csstools/postcss-gradient-stop-increments-experimental --save-dev
[PostCSS Gradient Stop Increments] lets you increment gradient stops following the [CSSWG 8616 proposal].
``css
.example-1 {
background: linear-gradient(red 50%, blue ++1px);
}
.example-2 {
background: conic-gradient(red ++60deg, blue ++10deg ++50deg, green ++60deg, yellow ++60deg);
}
.example-3 {
background: conic-gradient(pink ++60deg, cyan 0 ++20deg, gold 0 ++10deg);
}
.example-4 {
background: linear-gradient(orange 20px, magenta 2vi, aqua ++2vw);
}
/ becomes /
.example-1 {
background: linear-gradient(red 50%, blue calc(50% + +1px));
}
.example-2 {
background: conic-gradient(red +60deg, blue 70deg 120deg, green 180deg, yellow 240deg);
}
.example-3 {
background: conic-gradient(pink +60deg, cyan 0 80deg, gold 0 90deg);
}
.example-4 {
background: linear-gradient(orange 20px, magenta 2vi, aqua calc(max(20px, 2vi) + +2vw));
}
`
Add [PostCSS Gradient Stop Increments] to your project:
`bash`
npm install postcss @csstools/postcss-gradient-stop-increments-experimental --save-dev
Use it as a [PostCSS] plugin:
`js
const postcss = require('postcss');
const postcssGradientStopIncrementsExperimental = require('@csstools/postcss-gradient-stop-increments-experimental');
postcss([
postcssGradientStopIncrementsExperimental(/ pluginOptions /)
]).process(YOUR_CSS /, processOptions /);
`
The preserve option determines whether the original notation
is preserved. By default, it is not preserved.
`js`
postcssGradientStopIncrementsExperimental({ preserve: true })
`css
.example-1 {
background: linear-gradient(red 50%, blue ++1px);
}
.example-2 {
background: conic-gradient(red ++60deg, blue ++10deg ++50deg, green ++60deg, yellow ++60deg);
}
.example-3 {
background: conic-gradient(pink ++60deg, cyan 0 ++20deg, gold 0 ++10deg);
}
.example-4 {
background: linear-gradient(orange 20px, magenta 2vi, aqua ++2vw);
}
/ becomes /
.example-1 {
background: linear-gradient(red 50%, blue calc(50% + +1px));
background: linear-gradient(red 50%, blue ++1px);
}
.example-2 {
background: conic-gradient(red +60deg, blue 70deg 120deg, green 180deg, yellow 240deg);
background: conic-gradient(red ++60deg, blue ++10deg ++50deg, green ++60deg, yellow ++60deg);
}
.example-3 {
background: conic-gradient(pink +60deg, cyan 0 80deg, gold 0 90deg);
background: conic-gradient(pink ++60deg, cyan 0 ++20deg, gold 0 ++10deg);
}
.example-4 {
background: linear-gradient(orange 20px, magenta 2vi, aqua calc(max(20px, 2vi) + +2vw));
background: linear-gradient(orange 20px, magenta 2vi, aqua ++2vw);
}
``
[cli-url]: https://github.com/csstools/postcss-plugins/actions/workflows/test.yml?query=workflow/test
[discord]: https://discord.gg/bUadyRwkJS
[npm-url]: https://www.npmjs.com/package/@csstools/postcss-gradient-stop-increments-experimental
[PostCSS]: https://github.com/postcss/postcss
[PostCSS Gradient Stop Increments]: https://github.com/csstools/postcss-plugins/tree/main/experimental/postcss-gradient-stop-increments
[CSSWG 8616 proposal]: https://github.com/w3c/csswg-drafts/issues/8616