Research
Security News
Malicious npm Package Targets Solana Developers and Hijacks Funds
A malicious npm package targets Solana developers, rerouting funds in 2% of transactions to a hardcoded address.
@csstools/postcss-progressive-custom-properties
Advanced tools
Correctly declare progressive enhancements for CSS Custom Properties.
@csstools/postcss-progressive-custom-properties is a PostCSS plugin that allows you to progressively enhance your CSS custom properties (variables). It enables you to use custom properties in a way that provides fallbacks for older browsers that do not support them, ensuring a smoother transition and better compatibility.
Progressive Enhancement of Custom Properties
This feature allows you to define custom properties and use them in your CSS. The plugin will automatically add fallback values for browsers that do not support custom properties.
/* Input CSS */
:root {
--main-color: #3498db;
}
body {
color: var(--main-color);
}
/* Output CSS */
:root {
--main-color: #3498db;
}
body {
color: #3498db;
color: var(--main-color);
}
Custom Property Fallbacks
This feature allows you to specify fallback values for custom properties. The plugin ensures that the fallback value is used in browsers that do not support custom properties.
/* Input CSS */
:root {
--padding: 10px;
}
.container {
padding: var(--padding, 20px);
}
/* Output CSS */
:root {
--padding: 10px;
}
.container {
padding: 20px;
padding: var(--padding, 20px);
}
postcss-custom-properties is a PostCSS plugin that transforms W3C CSS Custom Properties for cascading variables. It provides similar functionality to @csstools/postcss-progressive-custom-properties by enabling the use of custom properties with fallbacks for older browsers. However, it may not offer the same level of progressive enhancement.
postcss-preset-env is a PostCSS plugin that allows you to use future CSS features today. It includes support for custom properties and provides fallbacks for older browsers. Compared to @csstools/postcss-progressive-custom-properties, it offers a broader range of CSS features beyond just custom properties.
PostCSS Progressive Custom Properties is a utility plugin to correctly declare Custom Property fallbacks and enhancements.
[!WARNING] It is not intended to be used directly by stylesheet authors. Meant to be included in other PostCSS plugins that provide CSS value transforms as fallbacks.
Custom Properties are not discarded like regular declarations when invalid. This makes it tricky to provide fallback values for older browsers.
The solution is to wrap Custom Property declarations in an @supports
rule.
:root {
/* fallback */
--a-color: red;
/* progressive enhancement */
--a-color: oklch(40% 0.234 0.39 / var(--opacity-50));
}
/* becomes */
:root {
--a-color: red;
}
@supports (color: oklch(0% 0 0)) {
:root {
--a-color: oklch(40% 0.234 0.39 / var(--opacity-50));
}
}
initial
and <white space>
are ignored.
.initial {
--prop-1: red;
--prop-1: initial;
}
.white-space {
--prop-1: red;
--prop-1:;
--prop-2: red;
--prop-2: ;
--prop-3: red;
--prop-3: ;
}
/* remains */
.initial {
--prop-1: red;
--prop-1: initial;
}
.white-space {
--prop-1: red;
--prop-1:;
--prop-2: red;
--prop-2: ;
--prop-3: red;
--prop-3: ;
}
Add PostCSS Progressive Custom Properties to your project:
npm install @csstools/postcss-progressive-custom-properties --save-dev
Use PostCSS Progressive Custom Properties as a PostCSS plugin:
const postcss = require('postcss');
const postcssCustomProperties = require('@csstools/postcss-progressive-custom-properties');
postcss([
postcssProgressiveCustomProperties()
]).process(YOUR_CSS /*, processOptions */);
This plugin wraps Custom Property override declarations in an @supports
rule.
With PostCSS 8 this trigger declaration visitors to run again.
Make sure your plugin detects and ignores values inside relevant @supports
rules.
PostCSS Progressive Custom Properties runs in all Node environments, with special instructions for:
Node | PostCSS CLI | Webpack | Gulp | Grunt |
---|
FAQs
Correctly declare progressive enhancements for CSS Custom Properties.
The npm package @csstools/postcss-progressive-custom-properties receives a total of 3,036,283 weekly downloads. As such, @csstools/postcss-progressive-custom-properties popularity was classified as popular.
We found that @csstools/postcss-progressive-custom-properties demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
A malicious npm package targets Solana developers, rerouting funds in 2% of transactions to a hardcoded address.
Security News
Research
Socket researchers have discovered malicious npm packages targeting crypto developers, stealing credentials and wallet data using spyware delivered through typosquats of popular cryptographic libraries.
Security News
Socket's package search now displays weekly downloads for npm packages, helping developers quickly assess popularity and make more informed decisions.