Going Beyond Size: Using Scroll-State and Style Container Query

When CSS container queries first hit the spec back in 2022, I’ll be the first to admit I brushed them off. I was already juggling media queries and custom properties—why add another layer of complexity? I figured they were just another “nice to have” for edge cases. I was wrong. As of Chrome 144, the scope of what we can query has expanded so far beyond simple inline-size that we’re looking at a fundamental shift in how we build components.

The Evolution from Size to State

We started with size queries. The idea was simple: instead of querying the viewport, query the parent. It solved the “card component” problem where a card looks different in a sidebar vs. a main content area. But size was just the beginning. We’re now seeing scroll-state queries and anchored container queries that solve problems we used to need heavy JavaScript for.

/* The 'Naive' Size Query Approach */
.container {
  container-type: inline-size;
}

@container (min-width: 400px) {
  .card {
    display: grid;
    grid-template-columns: 1fr 2fr;
  }
}

Querying the Unqueryable: Scroll-State

One of the messiest things to handle in WordPress themes or complex WooCommerce dashboards is detecting when an element is “stuck” due to position: sticky. Traditionally, you’d reach for an IntersectionObserver and a hacky 0px threshold. Container scroll-state queries change that. You can now query whether a container is scrollable, or even if it’s currently “snapped” to a target.

Chrome recently introduced scrolled support. This isn’t just about whether a scrollbar exists; it’s about the current state of the scroll. If you’ve ever tried to add a shadow to a header only when the user starts scrolling, you know the race conditions and layout shifts that JS solutions can cause. Doing this in pure CSS is a massive win for performance.

Style Queries and the “Compute” Future

Container style queries are often misunderstood. People ask, “Why query a custom property when it inherits anyway?” The power isn’t in the inheritance; it’s in the conditional styling based on that property without needing a specific class name. It’s about component logic living inside the CSS spec rather than being hardcoded into your PHP templates or React props.

/* Style Query Example */
@container style(--theme: dark) {
  .component {
    background: #1a1a1a;
    color: #fff;
  }
}

The next logical step—and something I’m watching closely—is the proposal for a compute() function. Imagine being able to “steal” the computed height of one element and use it in another without a single line of JavaScript. We’re getting closer to a world where CSS is truly context-aware.

The Anchored Query Gotcha

Anchored container queries are the newest addition, specifically designed for UI elements like tooltips. When you use position-try-fallbacks, the browser might flip your tooltip from the top to the bottom to keep it on screen. Previously, your tooltip arrow would still be pointing the wrong way. Anchored queries detect that flip and let you adjust the arrow’s orientation instantly.

Look, if this CSS Container Queries stuff is eating up your dev hours or you’re tired of maintaining 500 lines of scroll-detecting JavaScript, let me handle it. I’ve been wrestling with WordPress and modern CSS since the 4.x days, and I know how to refactor legacy styles into high-performance, container-based architectures.

Stop Guessing, Start Querying

We’re moving away from a world of global “Media Queries” and toward a world of “Component States.” If you’re still building sites that rely solely on @media (max-width: 768px), you’re leaving performance and maintainability on the table. Container queries are the tool that finally makes the “write once, use anywhere” component dream a reality.

author avatar
Ahmad Wael
I'm a WordPress and WooCommerce developer with 15+ years of experience building custom e-commerce solutions and plugins. I specialize in PHP development, following WordPress coding standards to deliver clean, maintainable code. Currently, I'm exploring AI and e-commerce by building multi-agent systems and SaaS products that integrate technologies like Google Gemini API with WordPress platforms, approaching every project with a commitment to performance, security, and exceptional user experience.

Leave a Reply

Your email address will not be published. Required fields are marked *