Old dogs, new CSS tricks
New CSS Features & Their Value
- Container queries: widely praised as a long‑requested shift from viewport‑based media queries to container‑based layout; seen as enabling truly reusable components. Some argue they’re less useful until elements can query their own size, and current wrappers “dirty” markup.
- :has() is viewed as a game‑changer (effective parent selector, replaces JS workarounds). :is() is seen as mild sugar; :where() divides opinions because of specificity complexity.
- Subgrid: considered very useful for aligned, card‑style layouts; some thought grid already sufficed, others showed concrete cases where subgrid beats hacks like
display: contents, which also has accessibility issues. - Native nesting: broadly liked as a quality‑of‑life feature, though some note compatibility nuances (the
&syntax vs newer “no‑&” form). - Logical properties: appreciated for enabling RTL support if teams stay disciplined.
- Anchor positioning, scroll-linked animations, view transitions: seen as promising for micro‑interactions and reducing JS, but currently niche and/or Chrome‑only; expected to be overused in “marketing” sites.
CSS Complexity and Developer Experience
- Some feel modern CSS is becoming too complex, resembling compiler output rather than hand‑crafted code. Layers and scoping are called unintuitive or “gibberish.”
- Others report the opposite: the new features simplify their CSS and could eventually obviate Sass, BEM, and many frameworks.
- Concern raised about “too many ways” to do similar things, impacting readability and team onboarding.
Browser Support & Backwards Compatibility
- A major blocker is old browsers and especially old iOS/Safari versions, iPads, TVs, and set‑top boxes that don’t auto‑update.
- Debate over how aggressively to drop old browsers: some argue not supporting them nudges users toward safer, updated software; others highlight users who simply cannot upgrade.
- Progressive enhancement with
@supportsand fallback styles is encouraged, but teams note the maintenance and testing cost of dual paths.
Adoption Barriers & Team Practices
- Many projects use frameworks (Bootstrap, Tailwind, MUI) or large legacy stylesheets; they won’t be rewritten just to use new features.
- Long‑time devs, burned by the IE era, still instinctively avoid features newer than 2–3 years.
- Team dynamics matter: using new CSS often requires educating colleagues and aligning on conventions.
Tooling, Frameworks & Alternatives
- Utility CSS (e.g., Tailwind‑style) is praised for eliminating cascade conflicts but criticized for avoiding CSS rather than improving it.
- Persistent complaint: massive, append‑only CSS files with
!importanteverywhere; “well‑written CSS” is rare. - Calls for better tooling: compilers with warnings, dead‑code detection, stronger scoping, and richer editor support. Some note existing solutions (CSS Modules, styled components, PostCSS/Lightning CSS, IDE support) but acknowledge they’re not universal.
Learning & Keeping Up
- Suggested resources: MDN, web.dev, caniuse.com, the Interop project, and the State of CSS surveys.
- Some readers wish the article and similar posts included more live demos and links to docs for each feature.