Global CSS options with custom properties

Programming - Mar 31, 2024

With a preprocessor, like Sass, building a logical “do this or don’t” setting is fairly straightforward:

$option: false;

@mixin doThing {
  @if $option {
    do-thing: yep;

.el {
  @include doThing;

Can we do that in native CSS with custom properties? Mark Otto shows that we can. It’s just a smidge different.

html {
  --component-shadow: 0 .5rem 1rem rgba(0,0,0,.1);

.component {
  box-shadow: var(--component-shadow);

<!-- override the global anywhere more specific! like
     <div class="component remove-shadow">
     <body class="remove-shadow"> -->
.remove-shadow {
  --component-shadow: none;

Direct Link →

Previous Next
We respect the property rights of others, and are always careful not to infringe on their rights, so authors and publishing houses have the right to demand that an article or book download link be removed from the site. If you find an article or book of yours and do not agree to the posting of a download link, or you have a suggestion or complaint, write to us through the Contact Us .
Read More