Solution 1 :

Constructable stylesheets are designed to address, among others, exactly this problem you’re having.

There has been experimental support for constructable stylesheets in Firefox since version 73 (Feb. 2020). Not sure why it hasn’t left the experimental feature status for more than 2 years now.

You can enable it by setting layout.css.constructable-stylesheets.enabled to true in about:config.

Until it’s no longer experimental, you can use a polyfill.

The next thing that will help you reduce redundancy is called CSS Module Scripts. From that page:

Deduplication: if the same CSS file is imported from multiple places in an application, it will still only be fetched, instantiated, and parsed a single time.

Unfortunately, that also hasn’t landed in Firefox yet (see this tracking bug), but already in the specification.

Solution 2 :

But if i say to tailwind css with reactjs. Reactjs specially designed to remove repetition.
Please check tailwind docs where even you can assign your custom css function for anything.

Problem :

I’m building with Web Component without any 3rd-party framework.

And I have vanilla <button> in several of my components, and I have to reset EVERY ONE of them before I do my custom styling on them because resetting it once at a root level doesn’t work since the properties involved are not one of inheritable styles that pierce through shadow dom:

button {
   appearance: none;
   background: none;
   border: none;
   ...
}

What do you all think is the current best and widely supported way to avoid this repetition?

I have looked at the Constructable Stylesheets, but it’s poorly supported in Firefox, which is my main browser. I also considered CSS Custom Properties, but that would still lead to repetition of background, border etc. properties everywhere right?

Comments

Comment posted by developer.mozilla.org/en-US/docs/Web/CSS/all

Does this help you:

Comment posted by only works

Seems

Comment posted by connexo

and since only font related CSS can pierce through shadow dom

Comment posted by connexo

There has been experimental support for constructable stylesheets in Firefox since version 73 (Feb. 2020). Not sure why it hasn’t changed the experimental feature status for more than 2 years now. You can enable it by setting

Comment posted by kyw

Does end-users have to do the same in

Comment posted by quite small

Thank you! I will use the polyfill for now. luckily its file size is

Comment posted by connexo

You did not understand the question. Tailwind, while also being the worst possible approach in my opinion, is not of great help when it comes to web components and shadow DOM.

Comment posted by Varun Kaklia

According to me any approach that will help to solve any query is best. That is why am telling about tailwind.

By