PostCSS Double Position Gradients lets you use double-position gradients in CSS, following the CSS Image Values and Replaced Content specification.
.linear-gradient {
background-image: linear-gradient(90deg, black 25% 50%, blue 50% 75%);
}
.conic-gradient {
background-image: conic-gradient(yellowgreen 40%, gold 0deg 75%, #f06 0deg);
}
/* becomes */
.linear-gradient {
background-image: linear-gradient(90deg, black 25%, black 50%, blue 50%, blue 75%);
background-image: linear-gradient(90deg, black 25% 50%, blue 50% 75%);
}
.conic-gradient {
background-image: conic-gradient(yellowgreen 40%, gold 0deg, gold 75%, #f06 0deg);
background-image: conic-gradient(yellowgreen 40%, gold 0deg 75%, #f06 0deg);
}
Add PostCSS Double Position Gradients to your project:
npm install postcss-double-position-gradients --save-dev
Use PostCSS Double Position Gradients to process your CSS:
const postcssDoublePositionGradients = require('postcss-double-position-gradients');
postcssDoublePositionGradients.process(YOUR_CSS /*, processOptions, pluginOptions */);
Or use it as a PostCSS plugin:
const postcss = require('postcss');
const postcssDoublePositionGradients = require('postcss-double-position-gradients');
postcss([
postcssDoublePositionGradients(/* pluginOptions */)
]).process(YOUR_CSS /*, processOptions */);
PostCSS Double Position Gradients runs in all Node environments, with special instructions for:
Node | PostCSS CLI | Webpack | Create React App | Gulp | Grunt |
---|
The preserve
option determines whether the original double-position gradients
should be preserved. By default, double-position gradients are preserved.
postcssDoublePositionGradients({ preserve: false })
.linear-gradient {
background-image: linear-gradient(90deg, black 25% 50%, blue 50% 75%);
}
.conic-gradient {
background-image: conic-gradient(yellowgreen 40%, gold 0deg 75%, #f06 0deg);
}
/* becomes */
.linear-gradient {
background-image: linear-gradient(90deg, black 25%, black 50%, blue 50%, blue 75%);
}
.conic-gradient {
background-image: conic-gradient(yellowgreen 40%, gold 0deg, gold 75%, #f06 0deg);
}
The enableProgressiveCustomProperties
option determines whether the original notation
is wrapped with @supports
when used in Custom Properties. By default, it is enabled.
preserve
to false
or if you bring your own fix for Custom Properties. See what the plugin does in its README.
postcssDoublePositionGradients({ enableProgressiveCustomProperties: false })
:root {
--a-gradient: linear-gradient(90deg, black 25% 50%, blue 50% 75%);
}
/* becomes */
:root {
--a-gradient: linear-gradient(90deg, black 25%, black 50%, blue 50%, blue 75%); /* will never be used, not even in older browser */
--a-gradient: linear-gradient(90deg, black 25% 50%, blue 50% 75%);
}