skew()

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

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 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 will be the value added it.

Syntax

The skew() function is specified with either one or two values, which represent the amount of skewing to be applied in each direction.

skew(ax)

skew(ax, ay)

Values

ax
Is an <angle> representing the angle to use to distort the element along the abscissa.
ay
Is an <angle> representing the angle to use to distort the element along the ordinate. 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 1tan(ax)0tan(ay)10001 1tan(ax)0tan(ay)10001 1tan(ax)00tan(ay)10000100001
[1 tan(ay) tan(ax) 1 0 0]

Examples

Using a single x-angle

HTML

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

CSS

div {
  width: 80px;
  height: 80px;
  background-color: skyblue;
}

.skewed {
  transform: skew(10deg); /* Equal to skewX(10deg) */
  background-color: pink;
}

Result

Using two angles

HTML

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

CSS

div {
  width: 80px;
  height: 80px;
  background-color: skyblue;
}

.skewed {
  transform: skew(10deg, 10deg);
  background-color: pink;
}

Result

Specifications

Specification Status Comment
CSS Transforms Level 1
The definition of 'skew()' in that specification.
Working Draft Initial definition

Browser compatibility

Please see the <transform-function> data type for compatibility info.

See also