fun fact: This isn’t any one specific CSS framework’s doing but rather part of how JS UI libraries handle scoped CSS. When you have for example two components that have similar CSS, like one component sets button to color green, another component sets button to blue, then the compiler does this kinda thing because “real” CSS doesn’t support scoping.
So in the above example you’d get button class abcd and button class bcde.
I’m honestly not sure, but I’m fairly certain it’s intentional obfuscation done for the production build. Why they think it’s so important to hide class names, I’ll never know.
Which CSS framework is it that puts this shit everywhere?
That one can die in a fire.
fun fact: This isn’t any one specific CSS framework’s doing but rather part of how JS UI libraries handle scoped CSS. When you have for example two components that have similar CSS, like one component sets button to color green, another component sets button to blue, then the compiler does this kinda thing because “real” CSS doesn’t support scoping.
So in the above example you’d get button class abcd and button class bcde.
How *some JS UI libraries handle scoped CSS. Vue for example uses
data-
attributes instead.I’m honestly not sure, but I’m fairly certain it’s intentional obfuscation done for the production build. Why they think it’s so important to hide class names, I’ll never know.
It is not intentional. The tooling needs to generate a short unique id to prevent css name clashing.
During development 2 developers can write the same css class name in two seperate places:
.container { padding: 8px }
at dashboard.container { padding: 32px }
at sidebarWithout this tooling developer need to find ways to prevent name clashing:
.dashboard__container
.sidebar__container
and they need to do this for every class name.
with this tool, developer don’t have to worry about this ever, continue using
.container
and it get generated into:.aP2be7
.7aFrJp
To fight ad blockers