
Discover clean, modular, and scalable CSS architecture that mitigates cascade and specificity issues, enabling maintainable, reusable styles driven by selector-based architecture.
Explore how a monolithic CSS file causes overridden styles due to specificity, and apply object-oriented principles to build a scalable stylesheet that follows design order rather than browser order.
Assess prerequisites to ensure you’re ready for a non-beginner CSS architecture course. Emphasize understanding the problem over coding and learn to choose the right CSS methodologies for your product.
Explore applying object oriented principles to css for a cleaner, scalable architecture. Learn solid principles, dry, immutability, and separation of concerns with simple examples.
Explore how CSS specificity decides which rule applies by weighing ID, class, and type selectors, and visualize spikes in a specificity graph.
Explore immutability in CSS, showing how mutations from cascading styles cause unpredictable outcomes, and how applying single responsibility and controlled use of !important helps create predictable, decoupled styles.
Explore oocss concepts by separating structure from skin and container from content, use reusable structure and skin classes, and apply the single responsibility principle to decouple css from html.
Discover how BEM provides a contextual, reusable CSS structure by composing blocks, elements, and modifiers with unique class names, ensuring readable, conflict-free styles.
Explore the parallels between bem and oocss, learn to design reusable css modules or blocks, apply naming conventions, and keep a flat, dry, low-specificity architecture for scalable css.
CSS is easy, it’s easy to learn, it’s easy to write.
But actually, it’s hard to write scalable and maintainable code especially with large projects that require constant scaling…
There are many reasons why this is the case:
- In CSS everything is in a global scope. Any change in one file can cause an (un)expected result in another element, or page.
- CSS is a highly mutable language, because of it's cascade nature. Each mutation leads to confusion and unexpected results.
- CSS highly depends on the source order.
- On the other hand, specificity can undo everything. It doesn't matter how you structure your code, specificity can break everything. Specificity is one of the biggest problems of CSS.
- CSS is not (easily) scalable
We end up in a cycle of writing more CSS just to fix the old CSS! At some point our whole CSS code becomes too messy and too large. We need a better approach, we need a modular and predictable CSS. CSS language has not evolved since 1998. There are preprocessors, but they are not solving the main CSS issues. After all, SASS and Less are compiling to CSS.
In this course, we will talk about the CSS architecture, and how to write clean and maintainable code. Our goal is to write CSS that should be:
- Predictable: CSS rules behave as we expect them to.
- Reusable: When adding new components, we shouldn't need to recode patterns or problems we've already solved.
- Maintainable: New features, components, or updates shouldn't require refactoring our CSS and should NOT break existing components.
The idea is taking the OO philosophy you already learned in Java, PHP, C# and finding a way to translate that into CSS as well. All that you learned in OOP languages, all the DRY principles, SOLID, SRP, immutability we can apply to CSS in some way. Simple is the best.
There are many advanced courses about CSS, about flexbox, CSS animations, CSS grid… However, in this course, we will be focusing on the architecture of CSS. If you are interested in learning how to write clean and scalable CSS code, this course is the right thing for you!
This is a course I wish I had when I started working on more complex projects.