Кратко
СкопированоСвойство perspective
определяет расстояние от пользователя до плоскости экрана по оси z. При уменьшении значения свойства perspective
элементы (или части элементов), расположенные выше плоскости экрана по оси z (ближе к зрителю) увеличиваются в размерах, а те, что дальше — уменьшаются. Таким образом можно придать глубину элементу, к которому применяется свойство transform
. Эффект заметен только при 3D-трансформациях.
Свойство perspective
влияет на вложенные элементы контейнера, для которого указано, а не на сам контейнер.
Пример
Скопировано.parent { perspective: 50px;}.child { transform: rotateX(10deg);}
.parent { perspective: 50px; } .child { transform: rotateX(10deg); }
Как пишется
СкопированоЗначение по умолчанию — none
. Оно отменяет перспективу.
Значением может быть положительное число в доступных единицах измерения.
Влияние на элемент
СкопированоС применением свойства perspective
и свойства transform
элемент может отображаться по-разному.
.perspective-50 { perspective: 50px;}.perspective-100 { perspective: 100px;}.transform-rotate-x { background-color: #F498AD; transform: rotateX(50deg);}.transform-rotate-y { background-color: #2E9AFF; transform: rotateY(20deg);}
.perspective-50 { perspective: 50px; } .perspective-100 { perspective: 100px; } .transform-rotate-x { background-color: #F498AD; transform: rotateX(50deg); } .transform-rotate-y { background-color: #2E9AFF; transform: rotateY(20deg); }
<div class="parent perspective-50"> <div class="transform-rotate-x"> Перспектива 50 градусов по <i>x</i> </div></div><div class="parent perspective-100"> <div class="transform-rotate-y"> Перспектива 20 градусов по <i>y</i> </div></div>
<div class="parent perspective-50"> <div class="transform-rotate-x"> Перспектива 50 градусов по <i>x</i> </div> </div> <div class="parent perspective-100"> <div class="transform-rotate-y"> Перспектива 20 градусов по <i>y</i> </div> </div>
Интерактивная песочница
СкопированоНа практике
Скопированосоветует Скопировано
🛠 Для точного масштабирования в перспективе мы можем определить, во сколько раз увеличится элемент, по формуле d/(d-z), где d — значение свойства perspective
, z — смещение элемента отностительно плоскости экрана по оси z. Смещение по оси z определяем следующим образом: если задали элементу transform
, то параметр z равен 100px, а если задали элементу transform
, то для крайней левой точки элемента смещение по оси z определяется как sin(20), умноженный на половину изначальной ширины элемента.
Рассмотрим на конкретном примере: изначальная ширина элемента — 500px, высота — 150px, элемент повёрнут на 45°, родителю зададим perspective
. Применяем формулу: 700 / (700 - sin(45) * 250) = 1,3379 — во столько раз увеличится высота элемента в крайней левой точке. Подставляя разные значения в формулу можем «на бумаге» рассчитать эффект перспективы.