Technology News

Custom Property Brain Twisters

I am part of that 82% that got it wrong in Lea’s quiz (tweet version).

Here’s the code:

:root { --accent-color: skyblue;
} div { --accent-color: revert; background: var(--accent-color, orange);
}

So what background do I expect <div> to have?

My brain goes like this:

  1. Well, --accent-color is declared, so it’s definitely not orange (the fallback).
  2. The value for the background is revert, so it’s essentially background: revert;
  3. The background property doesn’t inherit though, and even if you force it to, it would inherit from the <body>, not the root.
  4. So… transparent.

Nope.

Lea:

[Because the value is revert it] cancels out any author styles, and resets back to whatever value the property would have from the user stylesheet and UA stylesheet. Assuming there is no --accent-color declaration in the user stylesheet, and of course UA stylesheets don’t set custom properties, then that means the property doesn’t have a value.

Since custom properties are inherited properties (unless they are registered with inherits: false, but this one is not), this means the inherited value trickles in, which is — you guessed it — skyblue.

Stephen posted a similar quiz the other day:

Again, my brain does it totally wrong. It goes:

  1. OK, well, --color is declared, so it’s not blue (the fallback).
  2. It’s not red because the second declaration will override that one.
  3. So, it’s essentially like p { color: inherit; }.
  4. The <p> will inherit yellow from the <body>, which it would have done naturally anyway, but whatever, it’s still yellow.

Nope.

Apparently inherit there is actually inheriting from the next place up the tree that sets it, which html does, so green. That actually is how normal inheriting works. It’s just a brain twister because it’s easy to conflate color the property with --color the custom property.

It also might be useful to know that when you actually declare a custom property with @property you can say whether you want it to inherit or not. So that would change the game with these brain twisters!

@property --property-name { syntax: '<color>'; inherits: false; initial-value: #c0ffee;
}
8 Crucial CRO Techniques That Will Boost Your ROI
Got the same name as a serial killer? Google might think you’re the same person.

Related Articles

40+ Motivational Quotes for Creatives

40-motivational-quotes-for-creatives
Sometimes we all need a little motivation. The road to creating something great can be tough. There are many twists and turns, failures, trials and tribulations. We all grow a…

How to Serve a Subdomain as a Subdirectory

how-to-serve-a-subdomain-as-a-subdirectory
Let’s say you have a website built on a platform that excels at design and it’s available at example.com. But that platform falls short at blogging. So you think to…

How to Attract Top Talent to Your Design Agency

how-to-attract-top-talent-to-your-design-agency
Onboarding talented employees is an important aspect of any organization’s success. So much so that large companies have dedicated hiring managers overlooking the recruitment process to ensure they attract the…

Powerful WYSIWYG Editors for PHP Web Apps

Powerful WYSIWYG Editors for PHP Web Apps
Even when there is no harm in using text-based editors for your PHP web apps, you will have you enter the code manually. Pro-coders might have no problems manually entering…

Business Loans: When Credit Scores Don’t Matter

Business Loans: When Credit Scores Don’t Matter
Business Loans- When Credit Scores Don’t Matter Cash flow and capital investment are important for business owners looking for growth and expansion. While many businesses approach banks and other conventional…