Кратко
СкопированоСвойство transform используем, когда нам нужно применить к элементу какие-либо трансформации: искажение, поворот, смещение, масштабирование.
Пример
СкопированоСмещаем визуальное представление элемента на 120 пикселей вправо:
.selector { transform: translateX(120px);}
.selector {
transform: translateX(120px);
}
Как пишется
СкопированоКлючевые слова:
.selector { transform: none;}
.selector {
transform: none;
}
Функция в качестве значения:
.selector { transform: matrix(1, 2, 3, 4, 5, 6);}
.selector {
transform: matrix(1, 2, 3, 4, 5, 6);
}
Подробно о функциях, которые можно указывать в качестве значения, написано в статье «Функции CSS-трансформации».
Несколько значений:
.selector { transform: perspective(500px) translate(10px, 0, 20px) rotateY(3deg);}
.selector {
transform: perspective(500px) translate(10px, 0, 20px) rotateY(3deg);
}
Как понять
СкопированоЧасто бывает необходимо каким-то образом трансформировать визуальное представление элемента (масштабировать, повернуть, переместить) и при этом никак не затронуть соседние элементы в документе. Для подобных преобразований используется свойство transform. В качестве значения выступают различные функции трансформации: rotate, translate, scale, skew.
Стоит обратить особое внимание на тот факт, что трансформируемый элемент при трансформациях никак не взаимодействует с соседними элементами. Он как бы «приподнимается» над остальным содержимым. При этом он не уходит из потока документа, и остальные элементы располагаются так, как располагались до применения трансформаций.
Подсказки
Скопировано💡 Трансформировать можно только трансформируемые элементы. Звучит как «масло масляное», но на странице существуют определённые типы элементов, к которым не применима стандартная блочная модель. Нельзя трансформировать строчные и табличные элементы.
💡 Если среди значений есть функция perspective, то она должна быть первой среди всех значений:
Неправильно:
.selector { transform: translate(10px, 0, 20px) rotateY(3deg) perspective(500px);}
.selector {
transform: translate(10px, 0, 20px) rotateY(3deg) perspective(500px);
}
Правильно:
.selector { transform: perspective(500px) translate(10px, 0, 20px) rotateY(3deg);}
.selector {
transform: perspective(500px) translate(10px, 0, 20px) rotateY(3deg);
}
💡 Можно применять трансформации сразу к нескольким осям, используя сокращённые функции:
.selector { transform: translateX(10px) translateY(0) translateZ(20px);}
.selector {
transform: translateX(10px) translateY(0) translateZ(20px);
}
Или можно использовать одну функцию translate, указав значение для всех трёх осей:
.selector { transform: translate(10px, 0, 20px);}
.selector {
transform: translate(10px, 0, 20px);
}
💡 Если свойство transform имеет значение, отличное от none, то создаётся новый контекст наложения. Это означает, что относительно этого элемента теперь будут позиционироваться все дочерние элементы, у которых position или position.
💡 Чтобы трансформации вдоль оси z работали и выглядели максимально естественно, трансформируемый элемент должен лежать в родителе, которому задано свойство perspective:
.parent { perspective: 500px;}.child { transform: translateZ(100px) rotateX(25deg);}
.parent {
perspective: 500px;
}
.child {
transform: translateZ(100px) rotateX(25deg);
}
На практике
Скопированосоветует
Скопировано🛠 Благодаря тому, что трансформации элемента никак не затрагивают соседей, свойство transform в сочетании с transition активно используется для создания плавных анимаций элемента при наведении, либо при изменении состояния.