On Cascading Style Sheets (CSS)

https://leanpub.com/on-web-development-2

37 Theses on CSS and Web Development

https://leanpub.com/on-web-development-2

CSS: The Pain Is Real

https://leanpub.com/on-web-development-2

The Two Extremes of Writing CSS, and What We Can Learn From Them

https://leanpub.com/on-web-development-2

CSS: “:has()” and the Lost Paradigm

https://leanpub.com/on-web-development-2

The Lost Paradigm

https://leanpub.com/on-web-development-2

The CSS Art Paradox

https://leanpub.com/on-web-development-2

70% Repetition in Style Sheets: Data on How We Fail at CSS Optimization

https://leanpub.com/on-web-development-2

Some Theory

https://leanpub.com/on-web-development-2

Some Numbers

https://leanpub.com/on-web-development-2

Some Conclusion

https://leanpub.com/on-web-development-2

Appendix

https://leanpub.com/on-web-development-2

Example

https://leanpub.com/on-web-development-2

FAQ

https://leanpub.com/on-web-development-2
Does this scale for larger sites, especially when styles are split across multiple files?
https://leanpub.com/on-web-development-2
What about mixins or other techniques which prefer repetition of declarations?
https://leanpub.com/on-web-development-2
Does it still make sense from a maintenance perspective to avoid repetition when declarations are only coincidentally the same?
https://leanpub.com/on-web-development-2
How does e.g. moving a width declaration away from the height declaration affect maintainability and readability?
https://leanpub.com/on-web-development-2
What about repetition because of vendor-specific extensions?
https://leanpub.com/on-web-development-2
Why is Atomic CSS (or x) not being mentioned?
https://leanpub.com/on-web-development-2

DRY CSS: How to Use Declarations Just Once, Effectively

https://leanpub.com/on-web-development-2

General Steps

https://leanpub.com/on-web-development-2

Special Cases

https://leanpub.com/on-web-development-2

Examples

https://leanpub.com/on-web-development-2

Optimizing I

https://leanpub.com/on-web-development-2

Optimizing II

https://leanpub.com/on-web-development-2

Editing

https://leanpub.com/on-web-development-2

Tips

https://leanpub.com/on-web-development-2

Tool Needs

https://leanpub.com/on-web-development-2

How Declaration Repetition Developed Over Time, a Statistically Insignificant Sample

https://leanpub.com/on-web-development-2

Performance of CSS Selectors Is Still Irrelevant

https://leanpub.com/on-web-development-2

CSS: The Reason Why Selectors Should Be Ordered, Too

https://leanpub.com/on-web-development-2

Stop Using the Old “Clearfix”

https://leanpub.com/on-web-development-2

Stop Using Resets: Visual Examples of the Practical Nonsense of Resets and Normalizers

https://leanpub.com/on-web-development-2

5 Reasons Against Resets, Normalizers, Reboots

https://leanpub.com/on-web-development-2

The CSS Reset Contradiction

https://leanpub.com/on-web-development-2

Premises

https://leanpub.com/on-web-development-2

Reality

https://leanpub.com/on-web-development-2

Convenience

https://leanpub.com/on-web-development-2

Consequences

https://leanpub.com/on-web-development-2

The Anti-Reset (to Reset to User Agent Styles)

https://leanpub.com/on-web-development-2https://leanpub.com/on-web-development-2

1. Have a Print Style Sheet, and Be It a Negative One

https://leanpub.com/on-web-development-2

2. Hide What’s Not Usable or Useful—and Be Subtle Otherwise

https://leanpub.com/on-web-development-2

3. Test and Tweak

https://leanpub.com/on-web-development-2

Minimal Dark Mode

https://leanpub.com/on-web-development-2

Update (March 24, 2025)

https://leanpub.com/on-web-development-2

CSS: When to Use Logical Properties

https://leanpub.com/on-web-development-2

Should We Never Use Non-Logical Properties?

https://leanpub.com/on-web-development-2

Update (August 14, 2025)

https://leanpub.com/on-web-development-2

Custom Properties: Questioning “:root”

https://leanpub.com/on-web-development-2

CSS Shorthand Syntax Considered Important

https://leanpub.com/on-web-development-2

CSS Naked Day and the Missing Wikipedia Page

https://leanpub.com/on-web-development-2

Implementation

https://leanpub.com/on-web-development-2

History

https://leanpub.com/on-web-development-2

Reception

https://leanpub.com/on-web-development-2

Comments About This Draft

https://leanpub.com/on-web-development-2

My CSS Wishlist

https://leanpub.com/on-web-development-2

Thoughts on CSS in 2024

https://leanpub.com/on-web-development-2

What I Appreciate

https://leanpub.com/on-web-development-2

Favorites

https://leanpub.com/on-web-development-2

What I Don’t Need

https://leanpub.com/on-web-development-2

Why I Don’t Use CSS Preprocessors

https://leanpub.com/on-web-development-2

The Craft of CSS

https://leanpub.com/on-web-development-2