HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-26
1 <p>Сегодня много способов создать 3D на странице, но CSS позволяет это сделать "нативно", то есть без применения сторонних плагинов. В оставшихся уроках этого курса мы рассмотрим все, что связано с трансформациями в трехмерном пространстве. От создания элементов, до их искажений.</p>
1 <p>Сегодня много способов создать 3D на странице, но CSS позволяет это сделать "нативно", то есть без применения сторонних плагинов. В оставшихся уроках этого курса мы рассмотрим все, что связано с трансформациями в трехмерном пространстве. От создания элементов, до их искажений.</p>
2 <p>Чем двухмерный объект отличается от трехмерного? Если говорить с точки зрения науки, то появляется новая ось координат. В прошлых уроках мы производили трансформации только по двум осям:<em>x</em>и<em>y</em>. В трехмерном пространстве появляется дополнительная ось<em>z</em>, благодаря которой мы можем добавить глубины объекту.</p>
2 <p>Чем двухмерный объект отличается от трехмерного? Если говорить с точки зрения науки, то появляется новая ось координат. В прошлых уроках мы производили трансформации только по двум осям:<em>x</em>и<em>y</em>. В трехмерном пространстве появляется дополнительная ось<em>z</em>, благодаря которой мы можем добавить глубины объекту.</p>
3 <p>В процессе прохождения второй части курса мы научимся работать с осью<em>z</em>, и для того, чтобы увидеть основные изменения в стилях вводится понятие<em>перспективы</em>, то есть расстояние между экраном и расположением элемента в глубине по оси<em>z</em>. Именно перспектива является тем, на что опирается мозг для определения трехмерности объекта.</p>
3 <p>В процессе прохождения второй части курса мы научимся работать с осью<em>z</em>, и для того, чтобы увидеть основные изменения в стилях вводится понятие<em>перспективы</em>, то есть расстояние между экраном и расположением элемента в глубине по оси<em>z</em>. Именно перспектива является тем, на что опирается мозг для определения трехмерности объекта.</p>
4 <h2>Перспектива</h2>
4 <h2>Перспектива</h2>
5 <p>Перспектива указывается у родительского объекта, внутри которого будут находиться элементы с трансформациями. Обратите внимание на следующий пример. В нем для объектов указаны одинаковые стили и одинаковая анимация с одной разницей: одна из сцен имеет перспективу в 800 пикселей. В этом примере обратите внимание на то, как вращаются элементы по оси<em>x</em>. В сцене с перспективой есть глубина и элемент не просто визуально меняет свои размеры, но и видно именно его поворот, в отличие от соседней сцены. В двухмерной сцене такое вращение достигается путем сжимания и разжимания элемента, а не непосредственного его вращения, так как отсутствует дополнительная ось<em>z</em>.</p>
5 <p>Перспектива указывается у родительского объекта, внутри которого будут находиться элементы с трансформациями. Обратите внимание на следующий пример. В нем для объектов указаны одинаковые стили и одинаковая анимация с одной разницей: одна из сцен имеет перспективу в 800 пикселей. В этом примере обратите внимание на то, как вращаются элементы по оси<em>x</em>. В сцене с перспективой есть глубина и элемент не просто визуально меняет свои размеры, но и видно именно его поворот, в отличие от соседней сцены. В двухмерной сцене такое вращение достигается путем сжимания и разжимания элемента, а не непосредственного его вращения, так как отсутствует дополнительная ось<em>z</em>.</p>
6 <p><a>https://codepen.io/hexlet/pen/OJgzPxZ</a></p>
6 <p><a>https://codepen.io/hexlet/pen/OJgzPxZ</a></p>
7 <p>Управлять перспективой в CSS можно используя свойство perspective. Оно может принимать любое значение, которыми можно определить размер: px, em, rem и так далее. Свойство показывает, на каком расстоянии по оси<em>z</em>располагается элемент.</p>
7 <p>Управлять перспективой в CSS можно используя свойство perspective. Оно может принимать любое значение, которыми можно определить размер: px, em, rem и так далее. Свойство показывает, на каком расстоянии по оси<em>z</em>располагается элемент.</p>
8 <p><strong>Важно:</strong>чем больше значение, тем дальше элемент находится от зрителя. Это означает, что его трансформации будут менее заметны, чем у объекта, который находится ближе. Но за этим стоит и проблема: малое значение перспективы может деформировать элемент не так, как мы это ожидаем.</p>
8 <p><strong>Важно:</strong>чем больше значение, тем дальше элемент находится от зрителя. Это означает, что его трансформации будут менее заметны, чем у объекта, который находится ближе. Но за этим стоит и проблема: малое значение перспективы может деформировать элемент не так, как мы это ожидаем.</p>
9 <p><a>https://codepen.io/hexlet/pen/RwgxWoN</a></p>
9 <p><a>https://codepen.io/hexlet/pen/RwgxWoN</a></p>
10 <p>В этом примере можно заметить, что чем меньше перспектива, тем ближе к нам происходит вращение. При значении в 200 пикселей возникает ощущение, что блок проворачивают прям перед нашими глазами, а значит объект искажается. При перспективе в 5000 пикселей эффект не такой заметный, так как объект очень далеко от нас. Если увеличить значение до размеров в 20000 пикселей, то вращение будет похоже на то, что происходит в двухмерном пространстве.</p>
10 <p>В этом примере можно заметить, что чем меньше перспектива, тем ближе к нам происходит вращение. При значении в 200 пикселей возникает ощущение, что блок проворачивают прям перед нашими глазами, а значит объект искажается. При перспективе в 5000 пикселей эффект не такой заметный, так как объект очень далеко от нас. Если увеличить значение до размеров в 20000 пикселей, то вращение будет похоже на то, что происходит в двухмерном пространстве.</p>
11 <h2>Точка зрения</h2>
11 <h2>Точка зрения</h2>
12 <p>Здесь мы говорим не о мыслях, а о действительной точке зрения на объект, то есть о том, в какой позиции мы находимся: слева, справа, сверху, снизу, немного сбоку и так далее. Изменение точки зрения сильно влияет на то, как объект будет трансформироваться. Чтобы в этом убедиться, вы можете взять любой объект в руку и начать его вращать. Постепенно меняйте положение своей головы или объекта и обратите внимание на то, как вы будете видеть то же вращение, но под другим углом.</p>
12 <p>Здесь мы говорим не о мыслях, а о действительной точке зрения на объект, то есть о том, в какой позиции мы находимся: слева, справа, сверху, снизу, немного сбоку и так далее. Изменение точки зрения сильно влияет на то, как объект будет трансформироваться. Чтобы в этом убедиться, вы можете взять любой объект в руку и начать его вращать. Постепенно меняйте положение своей головы или объекта и обратите внимание на то, как вы будете видеть то же вращение, но под другим углом.</p>
13 <p>Для определения точки зрения используется свойство perspective-origin. По своим значением оно схоже со свойством transform-origin, только теперь определяется не точка трансформации, а точка, с которой мы наблюдаем трансформацию. По умолчанию такой точкой является центр объекта, которое записывается так:</p>
13 <p>Для определения точки зрения используется свойство perspective-origin. По своим значением оно схоже со свойством transform-origin, только теперь определяется не точка трансформации, а точка, с которой мы наблюдаем трансформацию. По умолчанию такой точкой является центр объекта, которое записывается так:</p>
14 <p><a>https://codepen.io/hexlet/pen/XWgVmGQ</a></p>
14 <p><a>https://codepen.io/hexlet/pen/XWgVmGQ</a></p>
15 <p>В примере выше для каждого блока использовано только одно из трех значений. Обратите внимание на то, как меняется восприятие от вращения объекта при разных точках зрения.</p>
15 <p>В примере выше для каждого блока использовано только одно из трех значений. Обратите внимание на то, как меняется восприятие от вращения объекта при разных точках зрения.</p>
16 <p><strong>Важно:</strong>свойство perspective-origin используется для контейнера, внутри которого находятся трансформируемые элементы. Если для разных элементов вам нужны разные точки зрения, то используйте несколько контейнеров. В примерах выше свойства perspective и perspective-origin не будут работать, если указать значения у селектора .box</p>
16 <p><strong>Важно:</strong>свойство perspective-origin используется для контейнера, внутри которого находятся трансформируемые элементы. Если для разных элементов вам нужны разные точки зрения, то используйте несколько контейнеров. В примерах выше свойства perspective и perspective-origin не будут работать, если указать значения у селектора .box</p>
17  
17