skew()

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

The skew() CSS function defines a transformation that skews an element on the 2D plane. Its result is a <transform-function> data type.

Try it

transform: skew(0); 
transform: skew(15deg, 15deg); 
transform: skew(-0.06turn, 18deg); 
transform: skew(0.312rad); 
<section id="default-example"> <img class="transition-all" id="example-element" src="/shared-assets/images/examples/firefox-logo.svg" width="200" /> </section> 

This transformation is a shear mapping (transvection) that distorts each point within an element by a certain angle in the horizontal and vertical directions. The effect is as if you grabbed each corner of the element and pulled them along a certain angle.

The coordinates of each point are modified by a value proportionate to the specified angle and the distance to the origin. Thus, the farther from the origin a point is, the greater the value added to it.

Syntax

css
skew(ax) skew(ax, ay) 

Values

ax

Is an <angle> representing the angle to use to distort the element along the x-axis.

ay Optional

Is an <angle> representing the angle to use to distort the element along the y-axis. If not defined, its default value is 0, resulting in a purely horizontal skewing.

Cartesian coordinates on ℝ^2 Homogeneous coordinates on ℝℙ^2 Cartesian coordinates on ℝ^3 Homogeneous coordinates on ℝℙ^3
(1tan(ax)tan(ay)1)\left( \begin{array}{cc} 1 & \tan(ax) \\ \tan(ay) & 1 \end{array} \right)
(1tan(ax)0tan(ay)10001)\left( \begin{array}{ccc} 1 & \tan(ax) & 0 \\ \tan(ay) & 1 & 0 \\ 0 & 0 & 1 \end{array} \right)
(1tan(ax)0tan(ay)10001)\left( \begin{array}{ccc} 1 & \tan(ax) & 0 \\ \tan(ay) & 1 & 0 \\ 0 & 0 & 1 \end{array} \right)
(1tan(ax)00tan(ay)10000100001)\left( \begin{array}{cccc} 1 & \tan(ax) & 0 & 0 \\ \tan(ay) & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{array} \right)
[1 tan(ay) tan(ax) 1 0 0]

Formal syntax

Examples

Skewing on the x-axis only

HTML

html
<div>Normal</div> <div class="skewed">Skewed</div> 

CSS

css
body { margin: 20px; } div { width: 80px; height: 80px; background-color: skyblue; } .skewed { transform: skew(10deg); /* Equal to skewX(10deg) */ background-color: pink; } 

Result

Skewing on both axes

HTML

html
<div>Normal</div> <div class="skewed">Skewed</div> 

CSS

css
body { margin: 20px; } div { width: 80px; height: 80px; background-color: skyblue; } .skewed { transform: skew(10deg, 10deg); background-color: pink; } 

Result

Specifications

Specification
CSS Transforms Module Level 1
# funcdef-transform-skew

Browser compatibility

See also