transform-origin
Quick Summary for transform-origin
The transform-origin CSS property sets the origin for an element's transformations.
Code Usage for transform-origin
transform-origin: -100% 50%; transform: rotate(45deg); 
More Details for transform-origin

transform-origin

The transform-origin CSS property sets the origin for an element's transformations.

The transform origin is the point around which a transformation is applied. For example, the transform origin of the rotate() function is the center of rotation.

In effect, this property wraps a pair of translations around the element's other transformations. The first translation moves the transform origin to the true origin at ( 0 , 0 ) . Then the other transformations are applied, and because the transform origin is at ( 0 , 0 ) , those transformations act about the transform origin. Finally, the opposite translation is applied, moving the transform origin back to its original location. Consequently, this definition

transform-origin: -100% 50%; transform: rotate(45deg); 

results in the same transformation as

transform-origin: 0 0; transform: translate(-100%, 50%) rotate(45deg) translate(100%, -50%); 

Reading from right to left, translate(100%, -50%) is the translation to bring the transform origin to the true origin, rotate(45deg) is the original transformation, and translate(-100%, 50%) is the translation to restore the transform origin to its original location.

By default, the origin of a transform is center.

Syntax

/* One-value syntax */ transform-origin: 2px; transform-origin: bottom;  /* x-offset | y-offset */ transform-origin: 3cm 2px;  /* x-offset-keyword | y-offset */ transform-origin: left 2px;  /* x-offset-keyword | y-offset-keyword */ transform-origin: right top;  /* y-offset-keyword | x-offset-keyword */ transform-origin: top right;  /* x-offset | y-offset | z-offset */ transform-origin: 2px 30% 10px;  /* x-offset-keyword | y-offset | z-offset */ transform-origin: left 5px -3px;  /* x-offset-keyword | y-offset-keyword | z-offset */ transform-origin: right bottom 2cm;  /* y-offset-keyword | x-offset-keyword | z-offset */ transform-origin: bottom right 2cm;  /* Global values */ transform-origin: inherit; transform-origin: initial; transform-origin: revert; transform-origin: unset; 

The transform-origin property may be specified using one, two, or three values, where each value represents an offset. Offsets that are not explicitly defined are reset to their corresponding initial values.

If a single <length> or <percentage> value is defined, it represents the horizontal offset.

If two or more values are defined and either no value is a keyword, or the only used keyword is center, then the first value represents the horizontal offset and the second represents the vertical offset.

One-value syntax: The value must be a <length>, a <percentage>, or one of the keywords left, center, right, top, and bottom. Two-value syntax: One value must be a <length>, a <percentage>, or one of the keywords left, center, and right. The other value must be a <length>, a <percentage>, or one of the keywords top, center, and bottom. Three-value syntax: The first two values are the same as for the two-value syntax. The third value must be a <length>. It always represents the Z offset.

Values

x-offset

Is a <length> or a <percentage> describing how far from the left edge of the box the origin of the transform is set.

offset-keyword

Is one of the left, right, top, bottom, or center keyword describing the corresponding offset.

y-offset

Is a <length> or a <percentage> describing how far from the top edge of the box the origin of the transform is set.

x-offset-keyword

Is one of the left, right, or center keyword describing how far from the left edge of the box the origin of the transform is set.

y-offset-keyword

Is one of the top, bottom, or center keyword describing how far from the top edge of the box the origin of the transform is set.

z-offset

Is a <length> (and never a <percentage> which would make the statement invalid) describing how far from the user eye the z=0 origin is set.

The keywords are convenience shorthands and match the following <percentage> values:

Keyword Value
left 0%
center 50%
right 100%
top 0%
bottom 100%

Formal definition

Initial value50% 50% 0
Applies totransformable elements
Inheritedno
Percentagesrefer to the size of bounding box
Computed valuefor <length> the absolute value, otherwise a percentage
Animation typesimple list of length, percentage, or calc

Note: The initial value of transform-origin is 0 0 for all SVG elements except for root <svg> elements and <svg> elements that are a direct child of a foreignObject, and whose transform-origin is 50% 50%, like other CSS elements. See the SVG transform-origin attribute for more information.

Formal syntax

[ <length-percentage> | left | center | right | top | bottom ] | [ [ <length-percentage> | left | center | right ] && [ <length-percentage> | top | center | bottom ] ] <length>?

where <length-percentage> = <length> | <percentage>

Examples

A demonstration of various transform values

This example shows the effect of choosing different transform-origin values for a variety of transformation functions.

See also

Using CSS transforms https://css-tricks.com/almanac/properties/t/transform-origin/ Select your preferred language English (US)DeutschEspañolFrançais日本語中文 (简体)正體中文 (繁體) Change language

No Items Found.

Add Comment
Type in a Nick Name here
 
Other Categories in CSS
css
Search CSS
Search CSS by entering your search text above.
Welcome

This is my test area for webdev. I keep a collection of code here, mostly for my reference. Also if i find a good link, i usually add it here and then forget about it. more...

Subscribe to weekly updates about things i have added to the site or thought interesting during the last week.

You could also follow me on twitter or not... does anyone even use twitter anymore?

If you found something useful or like my work, you can buy me a coffee here. Mmm Coffee. ☕

❤️👩‍💻🎮

🪦 2000 - 16 Oct 2022 - Boots
Random Quote
A person who never made a mistake never tried anything new.
Albert Einstein
Random CSS Property

<display-inside>

These keywords specify the element's inner display type, which defines the type of formatting context that lays out its contents (assuming it is a non-replaced element). These keywords are used as values of the display property, and can be used for legacy purposes as a single keyword, or as defined in the Level 3 specification alongside a value from the <display-outside> keywords.
<display-inside> css reference