Prevent simplifying translate: none;
and scale: none;
#703
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.
This PR fixes a subtle bug where
translate: none;
was simplified totranslate: 0;
. Similarlyscale: none;
was simplified toscale: 1;
.These simplifications are unsafe because
translate: 0;
andscale: 1;
create a stacking context wheretranslate: none;
andscale: none;
do not.The implementation currently changes the
Translate
andScale
structs to an enum with an explicitNone
variant for the"none"
case, and an explicitXYZ
variant for thex
,y
, andz
values.I considerd adding a more generic
Keyword
variant to theTranslate
andScale
enums, but I think that would be a bit overkill for this specific use case. Either way, I'm open to suggestions for the chosen APIs.Here is a jsfiddle playground (https://jsfiddle.net/2krswu8e/) to show the issue. Notice how the red boxes
5
and9
are on top of the blue boxes. This is not the case for the safetranslate: none;
andscale: none;
values.