Кратко
Скопированоskew
— это функция для CSS-трансформаций (transform
), которая искажает элемент вдоль осей x и y, создавая эффект перекоса.
Пример
СкопированоИскажаем элемент на 30 градусов вдоль оси x:
div { transform: skew(30deg);}
div { transform: skew(30deg); }
Как пишется
СкопированоУгол искажения должен указываться в единицах измерения углов. В случае, если в скобках указано одно значение, это величина искажения по оси x. Для искажения по оси y нужно дописать второе значение. Если мы хотим исказить элемент только по оси y, значение для x будет 0.
x
— угол искажения по горизонтали (ось x) в градусах (deg).
y
— (опционально) угол искажения по вертикали (ось y).
/* Искажение по X на 20 градусов */.skew-x { transform: skew(20deg);}/* Искажение по Y на 10 градусов */.skew-y { transform: skew(0, 10deg);}
/* Искажение по X на 20 градусов */ .skew-x { transform: skew(20deg); } /* Искажение по Y на 10 градусов */ .skew-y { transform: skew(0, 10deg); }
Можно исказить элемент сразу по обеим осям:
/* Искажение по X на 20° и по Y на 10° */.skew-both { transform: skew(20deg, 10deg);}
/* Искажение по X на 20° и по Y на 10° */ .skew-both { transform: skew(20deg, 10deg); }
skewX, skewY
СкопированоСуществует написание функции skew
в виде отдельных значений — skew
, skew
. Сейчас такая форма записи считается устаревшей, сохраняется ради обратной совместимости и не рекомендуется к использованию в новых проектах.
Эти функции обозначают величину искажения элемента по конкретной оси:
/* Искажение по X на 20° */.skew { transform: skewX(20deg);}/* Эквивалентно современной записи */.skew-both { transform: skew(20deg);}
/* Искажение по X на 20° */ .skew { transform: skewX(20deg); } /* Эквивалентно современной записи */ .skew-both { transform: skew(20deg); }
/* Искажение по Y на 20° */.skew { transform: skewY(20deg);}/* Эквивалентно современной записи */.skew-both { transform: skew(0, 20deg);}
/* Искажение по Y на 20° */ .skew { transform: skewY(20deg); } /* Эквивалентно современной записи */ .skew-both { transform: skew(0, 20deg); }
Можно исказить элемент сразу по обеим осям:
/* Искажение по X на 20° и по Y на 40° */.skew-both { transform: skew(20deg, 40deg);}/* Эквивалентная запись, которая считается устаревшей */.skew-both { transform: skewX(20deg) skewY(40deg);}
/* Искажение по X на 20° и по Y на 40° */ .skew-both { transform: skew(20deg, 40deg); } /* Эквивалентная запись, которая считается устаревшей */ .skew-both { transform: skewX(20deg) skewY(40deg); }
Как понять
Скопированоskew
искажает стороны элемента, сохраняя параллельность линий. В отличие от scale
, размеры элемента остаются прежними. По умолчанию точка трансформации элемента — его центр. Можно комбинировать skew
с другими трансформациями (rotate
, translate
).
Важно
Скопировано💡 Нужно учитывать, что искажение влияет на весь элемент вместе с его содержимым. Например, текстом. Можно задать обратное искажение содержимому, если хочется сохранить его внешний вид.
Полезные инструменты
СкопированоДля генерации искажения можно использовать такие генераторы skew
, как Webcode, CSS-Generator и другие.
- Chrome 36, поддерживается
- Edge 12, поддерживается
- Firefox 16, поддерживается
- Safari 9, поддерживается