diff --git a/snippets/transform-detransform.md b/snippets/transform-detransform.md new file mode 100644 index 000000000..4273d13df --- /dev/null +++ b/snippets/transform-detransform.md @@ -0,0 +1,41 @@ +--- +title: Transform - Detransform +tags: visual, beginner +--- + +Sets a transform on the parent element and de-transforms the child elements, so they are not affected by the transform. +This allows for some neat effects such as skewed buttons. + +```html +
Child content
+``` + +```css +:root { + --transform: 10deg; +} + +.parent { + transform: skewX(var(--transform)); + padding: 1rem; + border: 1px solid; + display: inline-block; +} + +.child { + transform: skewX(calc(-1 * var(--transform))); +} +``` + +#### Explanation + +- `--transform: 10deg` sets a CSS variable we can later use to prevent duplicate code. +- `calc(-1 * var(--transform))` on the child element negates the transform from the parent. + +- Note: the `display` property of the child element may not be `inline`, otherwise the transform will be ignored ([see also](https://drafts.csswg.org/css-transforms-1/#terminology)). + +#### Browser support + +⚠️ Requires prefix for full support. + +- https://caniuse.com/#feat=transforms2d