I've always been rubbed weird by CSS for these reasons:
1. Often times, someone will do something that should be done programmatically with CSS instead, leading me to finally come to the realization of "holy shit the bug was hidden in the CSS!".
2. I've (very cattily) referred to CSS as Cascading Sideeffect Sheets. You can do things to mitigate it, but trying to wrap your head around an application's vanilla CSS declarations and which elements are effected by what is an enormous pain compared to what it could be. My team has switched to CSS Modules, and the scoping relieves sooo much of my aversion to it.
3. The final reason is that CSS proficiency just feels like memorizing a collection of "Gotchas" that don't make sense in isolation. It's not very programmatic, and lots rules aren't grouped or named in a way that you can understand what's going on by reading. For every CSS rule you need to understand for whatever reason, you're going to have to dive into some documentation to figure out exactly all of the effects/sideeffects it will have, and sometimes also have to grok their interactions with other rules.
Especially your last point. I want to do something with B, but I break A and C somehow. Or I change A to fix B but all of A breaks down. I google it, and there is a menu of choices. On week 3 the first one worked, on week 6 it all breaks down, so I go back to A and C, but it breaks A again.
I am really lazy with this.
I feel like no one knows CSS properly, whereas for my previous listed technologies, you can learn it without the "shotgun" approach.
I have always known I am missing something but never been able to put my hand on what that lightbulb is.
Edit! Also due to the "menu" effect, when I do put my trust in someone, it doesn't actually apply. Like an OOP programmer using global constants everywhere! So what I learned was actually incorrect, but now I am polluted by garbage...
1. Often times, someone will do something that should be done programmatically with CSS instead, leading me to finally come to the realization of "holy shit the bug was hidden in the CSS!".
2. I've (very cattily) referred to CSS as Cascading Sideeffect Sheets. You can do things to mitigate it, but trying to wrap your head around an application's vanilla CSS declarations and which elements are effected by what is an enormous pain compared to what it could be. My team has switched to CSS Modules, and the scoping relieves sooo much of my aversion to it.
3. The final reason is that CSS proficiency just feels like memorizing a collection of "Gotchas" that don't make sense in isolation. It's not very programmatic, and lots rules aren't grouped or named in a way that you can understand what's going on by reading. For every CSS rule you need to understand for whatever reason, you're going to have to dive into some documentation to figure out exactly all of the effects/sideeffects it will have, and sometimes also have to grok their interactions with other rules.