Skip to content

Latest commit

 

History

History
174 lines (136 loc) · 7.63 KB

perspective.md

File metadata and controls

174 lines (136 loc) · 7.63 KB
title layout slug script redirect_from
Перспектива
doc
perspective
perspective.js
/docs/perspective.html
/examples/perspective-01.html
/examples/perspective-02-children.html
/examples/perspective-03.html

Перспектива

Чтобы активировать 3D-пространство, элементу необходима перспектива. Это можно сделать двумя способами.

Первая техника — использование свойства transform с функцией perspective():

{% highlight css %} transform: perspective(400px); {% endhighlight %}

Например:

{% highlight css %} .panel--red { /* функция perspective в свойстве transform */ transform: perspective(400px) rotateY(45deg); } {% endhighlight %}

{% include edit-codepen.html pen_slug="XqMGRB" %}

Вторая техника — использование свойства perspective:

{% highlight css %} perspective: 400px; {% endhighlight %}

Например:

{% highlight css %} .scene--blue { /* свойство perspective */ perspective: 400px; }

.panel--blue { transform: rotateY(45deg); } {% endhighlight %}

{% include edit-codepen.html pen_slug="PepLOz" %}

Обе эти техники активируют 3D-пространство и могут дать одинаковый визуальный результат. Однако есть одно отличие. Функциональная нотация удобна для прямого применения 3D-преобразований к отдельному элементу (в красном примере я использую её в сочетании с трансформацией rotateY). Таким образом, это можно использовать как сокращение для 3D-преобразования одного элемента.

Но когда применяется к нескольким элементам, эффект не срабатывает. Преобразованные элементы не выстраиваются друг с другом. Это происходит потому, что у каждого элемента своя перспектива и точка схода. Чтобы этого избежать, применяйте свойство perspective к родительскому элементу, чтобы дочерние элементы могли разделять одно и то же 3D-пространство.

{% highlight css %} .panel--separate { transform: perspective(400px) rotateY(45deg); } {% endhighlight %}

{% include edit-codepen.html pen_slug="WJpmdO" %}

{% highlight css %} .scene--together { perspective: 400px; }

.panel--together { transform: rotateY(45deg); } {% endhighlight %}

{% include edit-codepen.html pen_slug="MGpxVG" %}

Значение свойства perspective определяет интенсивность 3D-эффекта. Представьте это как расстояние между зрителем и объектом. Чем больше значение, тем дальше объект, и тем менее заметным будет эффект. Например, perspective: 2000px даёт лёгкий 3D-эффект, как если бы мы смотрели на объект через бинокль издалека. А вот perspective: 100px создаёт потрясающий эффект, как если бы крошечное насекомое рассматривало гигантский объект.

Также можно использовать 3D-преобразования без перспективы, установив perspective: none или не задавая свойство perspective вообще. Без перспективы параллельные плоскости становятся ортогональными и не имеют точки схода.

По умолчанию точка схода для 3D-пространства расположена в центре. Вы можете изменить положение этой точки с помощью свойства perspective-origin.

{% highlight css %}

perspective-origin: 25% 75%;

{% endhighlight %}

лицевая
задняя
правая
левая
верхняя
нижняя

перспектива

точка схода по оси X

точка схода по оси Y

Крутить куб

Видимая задняя грань

{% include edit-codepen.html pen_slug="bMqZmr" %}


Далее: Функции 3D-трансформаций →