Fix responsive width/height utilities overriding order #6840 - #7428
Open
Timo-Breumelhof wants to merge 1 commit into
Open
Fix responsive width/height utilities overriding order #6840#7428Timo-Breumelhof wants to merge 1 commit into
Timo-Breumelhof wants to merge 1 commit into
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Fix responsive width/height utilities overriding in wrong breakpoint order
Fixes #6840: combining classes like aperture-w-xs-100 and aperture-w-md-50 didn't respond to breakpoints as expected — the pane stayed full-width instead of switching to 50% at md.
Root cause: in _dimension.scss's responsive-dimension mixin, the loop was nested size-outer/breakpoint-inner, so the compiled CSS was grouped by percentage value rather than by breakpoint (all .aperture-w--100 rules together, then all .aperture-w--75 rules, etc.). Since every responsive variant uses !important with equal specificity, ties are broken by source order — so a smaller breakpoint at a larger percentage could end up declared after a larger breakpoint at a smaller percentage, letting it win when both media queries matched simultaneously.
Fix: swap the loop nesting to breakpoint-outer/size-inner, so each breakpoint's @media block contains all size variants together, and breakpoints are guaranteed to appear in ascending order in the stylesheet. This also collapses the previous 5 sizes × 5 breakpoints = 25 separate @media blocks down to 5.
Test case (add to a skin page to verify — panes should stack full-width below md and sit side-by-side at md+):
fixes #6840