- Почему transform: rotate() не работает на символе?
- CSS3 transform not working
- 6 Answers 6
- CSS3 transform: rotate() и rotateY () не работают вместе
- 2 ответов
- 2.21. CSS3-трансформации
- 2D-трансформации элементов
- Поддержка браузерами
- 1. Функции 2D-трансформации transform
- 2. Точка трансформации transform-origin
- 3. Множественные трансформации
- 4. Трансформации на практике: как сделать ленточки
- Свойство transform
- Система координат
- Примечания
- Официальный синтаксис
- Примечания
- Значения
- Функции 2D-преобразований:
- translate()
- translateX()
- translateY()
- scale()
- scaleX()
- scaleY()
- rotate()
- skewX()
- skewY()
- matrix()
- Функции 3D-преобразования:
- translateZ()
- translate3d()
- scaleZ()
- scale3d()
- rotate3d()
- rotateX()
- rotateY()
- rotateZ()
- Примеры:
- matrix3d()
- perspective()
- Техническое описание:
- Примечания
- Примеры
- Интерактивная демо-версия
- Поддержка браузерами
- Поддержка 2D-преобразований CSS3
- Поддержка 3D-преобразований CSS3
Почему transform: rotate() не работает на символе?
Друзья, помогите! Почему не работает свойство transform на символ?
- Вопрос задан более трёх лет назад
- 1310 просмотров
Скажите, а как вставить такой же символ, но в .png формате?
Пытаюсь сделать в CSS background: url (‘. ‘);
но ничего не выходит — он просто не показывается
я не знаю, как скинуть именно мою картинку, но выглядит вот так:
хотя! если bg-color сделать, то он мне его заливает, но сам символ — нет
Прошу помочь разобраться!
usedtoknow, да так же, в папке img создаёшь пустой текстовый файл.
копируешь в него код вектора (например стрелка с тостера)
переименовываешь этот файл в «array.svg» (любое имя с svg расширением)
и в стилях обновляешь ссылку на изображение
../img/array.svg
usedtoknow, что значит не меняется? если не меняется цвет, то надо при ховере на ссылку менять и цвет у иконки.
а вообще почитайте про теги html, css селекторы и сразу отпадут большинство вопросов
JRK_DV, я практически все селекторы знаю, просто с свг дела не имел и как-то даже не подумал, что свг можно ховером засветить)
я просто посмотрел на одном сайте, так там свг используется как бэкграунд афтера ссылки, так вот там для ховера идет отдельный бэкграунд.
Вот я и подумал, что все не так просто, как обычно, а, как я понимаю, это особенности заливки бэкграундом
Но в любом случае, спрашивая вопросы и получая на них овет, я учусь намного быстрее
Источник
CSS3 transform not working
I am trying to transform my menu items by rotating them 10 degrees. My CSS works in Firefox but I’ve failed to replicate the effect in Chrome and Safari. I know IE doesn’t support this CSS3 property so that’s not a problem.
I used following CSS:
Could anybody please suggest where I am going wrong?
6 Answers 6
This is merely an educated guess without seeing the rest of your HTML/CSS:
Have you applied display: block or display: inline-block to li a ? If not, try it.
Otherwise, try applying the CSS3 transform rules to li instead.
is an inline element? Whodathunk. )
In webkit-based browsers(Safari and Chrome), -webkit-transform is ignored on inline elements.. Set display: inline-block; to make it work. For demonstration/testing purposes, you may also want to use a negative angle or a transformation-origin lest the text is rotated out of the visible area.
Since nobody referenced relevant documentation:
A transformable element is an element in one of these categories:
- an element whose layout is governed by the CSS box model which is either a block-level or atomic inline-level element, or whose display property computes to table-row, table-row-group, table-header-group, table-footer-group, table-cell, or table-caption
- an element in the SVG namespace and not governed by the CSS box model which has the attributes transform, ‘patternTransform‘ or gradientTransform.
Changing the display property’s value to inline-block renders the elements as atomic inline-level elements, and therefore the elements become «transformable» by definition.
As mentioned above, this only seems to applicable in -webkit based browsers since it appears to work in IE/FF regardless.
Источник
CSS3 transform: rotate() и rotateY () не работают вместе
у меня есть простой div, который я хочу сначала повернуть на -35 градусов, а затем позволить ему вращаться вокруг оси Y.
С помощью transform: rotate(-35deg) rotateY(180deg); , что я действительно получил это так:
ось y вращается с div, делает мою попытку неудачной.
Итак, вопрос в том, есть ли способ сбросить угол оси y (возможно, используя дополнительный родительский элемент и transform-origin ?) после поворота элемента, чтобы получить результат, который я хотел?
2 ответов
Да, хотя это потребует использования контейнера div. Подумайте о том, чтобы поместить div в div:
затем примените свое преобразование Z (первое) к внутреннему div:
и ваше преобразование Y в контейнер div, ось Y которого не была преобразована вращением Z
почему это необходимо сложно и, вероятно, выходит за рамки этого ответа, но достаточно сказать, что история 3D-программирования и рисования заставляет программистов ожидать поведения, которое вы видите здесь. таким образом, несколько последовательных преобразований могут иметь предсказуемые, единообразные результаты. Если браузеры не были прямолинейными по отношению к элементам DOM или если вы нарисовали ромбоидную форму (воздушный змей или тому подобное) с помощью SVG, вы можете вращать ее, как хотите, с ориентацией преобразования, идущей из одного угла в другой.
порядок преобразований противоположен тому, что кажется интуитивным. Объясняя, почему это слишком долго , но попробуйте следующее:
я вращаю -35 град, а затем вращаю, анимируя его от 0 до 360 (прочитайте преобразование справа налево).
Источник
2.21. CSS3-трансформации
Модель визуального форматирования CSS описывает систему координат внутри каждого позиционированного элемента. Система координат является точкой отсчета для свойств смещения. Положение и размеры в этом координатном пространстве можно рассматривать как заданные в пикселях, относительно точки отсчета, с положительными значениями, идущими вправо и вниз. Это координатное пространство можно изменить с помощью свойства transform .
CSS3-трансформации позволяют сдвигать, поворачивать и масштабировать элементы. Трансформации преобразовывают элемент, не затрагивая остальные элементы веб-страницы, т.е. другие элементы не сдвигаются относительно него.
К элементам, которые могут быть трансформированы, относятся элементы с display: block; и display: inline-block; , а также элементы, значение свойства display которых вычисляется как table-row , table-row-group , table-header-group , table-footer-group , table-cell или table-caption . Трансформированным считается элемент с любым установленным значением свойства transform , отличным от none .
Существуют два вида CSS3-трансформаций – 2D и 3D. 2D-трансформации преобразовывают элементы в двумерном пространстве c помощью 2D-матрицы преобразований. Эта матрица применяется для вычисления новых координат объекта, на основе значений свойств transform и transform-origin . Преобразования влияют только на визуальный рендеринг. В отношении макета страницы они могут отразиться на переполнении содержимого блока. По умолчанию точка трансформации находится в центре элемента.
2D-трансформации элементов
Поддержка браузерами
IE: 10.0, 9.0 -ms-
Edge: 12.0
Firefox: 16.0, 3.5 -moz-
Chrome: 36.0, 4.0 -webkit-
Safari: 9.0, 3.1 -webkit-
Opera: 23.0, 15.0 -webkit-
iOS Safari: 9, 7.1 -webkit-
Android Browser: 53, 2.1 -webkit-
Chrome for Android: -webkit-
1. Функции 2D-трансформации transform
Свойство задаёт вид преобразования элемента. Свойство описывается с помощью функций трансформации, которые смещают элемент относительно его текущего положения на странице или изменяют его первоначальные размеры и форму. Не наследуется.
Допустимые значения:
matrix() — любое число
translate() , translateX() , translateY() — единицы длины (положительные и отрицательные), %
scale() , scaleX() , scaleY() — любое число
rotate() — угол (deg, grad, rad или turn)
skew() , skewX() , skewY() — угол (deg, grad, rad)
Функция | Описание |
---|---|
none | Значение по умолчанию, означает отсутствие трансформации. Также отменяет трансформацию для элемента из группы трансформируемых элементов. |
matrix(a, c, b, d, x, y) | Смещает элементы и задает способ их трансформации, позволяя объединить несколько функций 2D-трансформаций в одной. В качестве трансформации допустимы поворот, масштабирование, наклон и изменение положения. Значение a изменяет масштаб по горизонтали. Значение от 0 до 1 уменьшает элемент, больше 1 — увеличивает. Значение c деформирует (сдвигает) стороны элемента по оси Y, положительное значение — вверх, отрицательное — вниз. Значение b деформирует (сдвигает) стороны элемента по оси X, положительное значение — влево, отрицательное — вправо. Значение d изменяет масштаб по вертикали. Значение меньше 1 уменьшает элемент, больше 1 — увеличивает. Значение x смещает элемент по оси X, положительное — вправо, отрицательное — влево. Значение y смещает элемент по оси Y, положительное значение — вниз, отрицательное — вверх. |
translate(x,y) | Сдвигает элемент на новое место, перемещая относительно обычного положения вправо и вниз, используя координаты X и Y, не затрагивая при этом соседние элементы. Если нужно сдвинуть элемент влево или вверх, то нужно использовать отрицательные значения. |
translateX(n) | Сдвигает элемент относительно его обычного положения по оси X. |
translateY(n) | Сдвигает элемент относительно его обычного положения по оси Y. |
scale(x,y) | Масштабирует элементы, делая их больше или меньше. Значения от 0 до 1 уменьшают элемент. Первое значение масштабирует элемент по ширине, второе — по высоте. Отрицательные значения отображают элемент зеркально. |
scaleX(n) | Функция масштабирует элемент по ширине, делая его шире или уже. Если значение больше единицы, элемент становится шире, если значение находится между единицей и нулем, элемент становится уже. Отрицательные значения отображают элемент зеркально по горизонтали. |
scaleY(n) | Функция масштабирует элемент по высоте, делая его выше или ниже. Если значение больше единицы, элемент становится выше, если значение находится между единицей и нулем — ниже. Отрицательные значения отображают элемент зеркально по вертикали. |
rotate(угол) | Поворачивает элементы на заданное количество градусов, отрицательные значения от -1deg до -360deg поворачивают элемент против часовой стрелки, положительные — по часовой стрелке. Значение rotate(720deg) поворачивает элемент на два полных оборота. |
skew(x-угол,y-угол) | Используется для деформирования (искажения) сторон элемента относительно координатных осей. Если указано одно значение, второе будет определено браузером автоматически. |
skewX(угол) | Деформирует стороны элемента относительно оси X. |
skewY(угол) | Деформирует стороны элемента относительно оси Y. |
initial | Устанавливает значение свойства в значение по умолчанию. |
inherit | Наследует значение свойства от родительского элемента. |
Наведите курсор мыши на блоки, чтобы посмотреть функции трансформации в действии.
2. Точка трансформации transform-origin
Свойство позволяет сместить центр трансформации, относительно которого происходит изменение положения/размера/формы элемента. Значение по умолчанию — center , или 50% 50% . Задаётся только для трансформированных элементов. Не наследуется.
transform-origin | |
---|---|
Значения: | |
ось Х( left , center , right , длина, % ) ось Y( top , center , bottom , длина, % ) | Пара значений, заданная с помощью ключевых слов, единиц длины или процентов определяет, относительно какой части элемента будет происходить трансформация. Значения больше 100% увеличивают область трансформации элемента. |
initial | Устанавливает значение свойства в значение по умолчанию. |
inherit | Наследует значение свойства от родительского элемента. |
See the Pen aNQNva by Elena Nazarova (@nazarelen) on CodePen.
3. Множественные трансформации
Можно объединить несколько трансформаций одного элемента, перечислив их через пробел в порядке проявления.
4. Трансформации на практике: как сделать ленточки
See the Pen BKGZPP by Elena Nazarova (@nazarelen) on CodePen.
Источник
Свойство transform
Свойство CSS transform позволяет визуально преобразовать элемент в двухмерном или трехмерном пространстве. С помощью преобразования элементы могут быть перемещены, повернуты и масштабированы в двух или трехмерном пространстве.
Если точнее, свойство transform преобразует систему координат элемента, что приводит к трансформации элемента в пространстве. Оно принимает в качестве значения список функций преобразования ( приведены ниже ) или значение none . Система координат элемента преобразуется в конечное значение, которое получается путем запуска каждой функции в соответствующую ей матрицу , а затем умножения этих матриц.
Любое значение свойства transform , отличное от none, в результате дает как стековый контекст, так и содержащий блок. Это означает, что преобразуемый элемент действует как контейнер для позиционируемых фиксировано дочерних элементов.
Матрица преобразования также зависит от значения свойства transform-origin , которое используется для указания исходного положения преобразования.
Система координат
Каждый элемент в CSS имеет систему координат, начало которой размещается в левом верхнем углу элемента.
При применении CSS transform начало системы координат переносится в центр элемента. Это происходит потому, что значение свойства transform-origin , применяемое по умолчанию, равно 50%50. После этого все преобразования применяются к элементу на основании нового положения системы координат.
С помощью свойства transform-origin можно указать, куда необходимо перенести начало координат. В зависимости от эффекта преобразования используются различные исходные положения преобразования.
Если с помощью свойства transform вы вращаете или наклоняете элемент, то же самое происходит с системой координат, и все последующие преобразования будут применяться на основе новой системы координат. Поэтому порядок преобразований имеет значение, разные последовательности приведут к различным преобразованиям. Это имеет смысл, потому что преобразования переводятся в матрицы, а умножение двух матриц в математике дает разные результаты в зависимости от порядка этих матриц. Например, а х b не дает тот же результат, что b х а ( если ни одна из них не является единичной ).
Если нужно переместить элемент с помощью CSS text transform в другое положение и повернуть его в новом положении, вы должны сделать это в указанном порядке: переместить, а затем повернуть. Если вы повернете элемент, то повернется его система координат, и перемещение в определенном направлении не приведет к ожидаемому результату.
Если вы повернете элемент на 90 градусов вокруг оси у, например, то его ось х будет указывать вглубь экрана, в противоположном от вас направлении. Таким образом, если после этого вы примените перемещение вдоль оси х , элемент не будет перемещаться вправо, он будет удаляться от вас. Поэтому при преобразованиях важно обращать внимание на порядок, в котором указаны функции свойства transform . Первая функция будет применяться первой, а последняя будет применена последней.
Примечания
Преобразования, применяемые к элементу, влияют на его визуальное отображение, но не влияют ни на один аспект CSS кроме свойства overflow . Пространство, которое занимал элемент до преобразования, он будет занимать после преобразования, а само преобразование не будет влиять на структуру других элементов вокруг него. Свойство CSStransform не влияет на поток контента, в котором размещается преобразованный элемент. В то же время, область заполнения учитывается при преобразовании.
Такое поведение аналогично тому, что происходит, когда элементы смещаются с помощью относительного позиционирования. Поэтому, если для свойства overflow задано значение scroll или auto , при необходимости будут отображаться полосы прокрутки, чтобы можно было просмотреть весь контент, который после преобразования вышел за пределы видимой области.
Хотя некоторые значения свойства transform позволяют преобразовывать элемент в трехмерной системе координат, сами элементы не являются трехмерными. Они существуют в двухмерной плоскости ( плоская поверхность ) и не имеют глубины.
Когда элемент преобразуется, значение fixed для свойства background-attachment рассматривается, как значение scroll . Вычисленное значение background-attachment не претерпевает изменений.
Кроме transform-origin при преобразовании могут использоваться свойства perspective и perspective-origin , чтобы задать для сцены глубину, а свойство transform-style — чтобы сохранить определение трехмерного пространства. Это полезно при выполнении вложенных CSS-преобразований . Все эти свойства используются в сочетании друг с другом для создания CSS-преобразования в двух или трех измерениях.
Официальный синтаксис
- Исходное значение: none
- Применяется к: трансформируемому элементу
- Анимируемо: да
Примечания
— это список из функций преобразования.
Значения
Можно применить к элементу преобразование, используя одно из следующих значений свойства transform :
- CSS transform rotate ()
- translateX()
- translateY()
- scale()
- scaleX()
- scaleY()
- rotate()
- skew()
- skewX
- skewY
- matrix()
- translateZ
- translate3d()
- scaleZ()
- scale3d()
- rotateX()
- rotateY()
- rotateZ()
- rotate3d()
- matrix3d()
- perspective()
Некоторые из этих функций используются для применения двухмерных преобразований, другие — для трехмерных преобразований.
Функции 2D-преобразований:
translate()
Функция CSS transform translate используется для перемещения элемента по вектору [tx, ty] , где tx — смещение по оси х , а ty — смещение по оси у . Если ty не указано, то его значение считается равным нулю, а элемент перемещается только вдоль оси х . Если единицы измерения не указаны, число будет рассматриваться как « пользовательские единицы «.
Положительное значение смещения перемещает элемент в направлении оси, а отрицательное значение — в направлении, противоположном направлению оси.
Результат применения к элементу смещения:
translateX()
Функция CSS transform translateX() используется, чтобы переместить элемент на заданное расстояние вдоль оси х . Значение tx задается в единицах длины или процентах. Если единицы измерения не указаны, число будет рассматриваться как « пользовательские единицы «.
Положительное значение смещения перемещает элемент вдоль направления оси х , а отрицательное значение — в противоположном направлении.
translateY()
Функция translateY() используется для перемещения элемента на заданное расстояние вдоль оси Y . Значение ty задается в единицах длины или процентах. Если единицы измерения не указаны, число будет рассматриваться, как « пользовательские единицы «.
Положительное значение смещения перемещает элемент вдоль направления оси y , а отрицательное значение — в противоположном направлении.
scale()
Функция CSS transform scale используется для масштабирования ( растягивания или сжатия ) элемента путем изменения его размеров в большую или в меньшую сторону. Она принимает в качестве значения одно или два числа без единиц измерения, sx и sy , где sx изменяет размеры элемента по оси х , а sy — по оси у . Если указано только одно значение ( sx ), второе значение ( sy ) будет рассматриваться, как равное первому.
Если указанное значение больше единицы, то элемент растягивается — он будет выглядеть больше в соответствующем направлении. Если значение равно единице, то элемент остается без изменений ( в соответствующем направлении ).
Если значение больше 0 , но меньше 1 , то элемент сжимается. Если значение равно нулю, то элемент исчезает. Отрицательные значения допустимы, но они не изменяют размеров элемента. Они задают поворот преобразуемого элемента в определенном направлении.
На следующем рисунке показан результат применения к изображению различных преобразований scale() . Первое слева — изображение без каких-либо преобразований. Второе — результат применения transform: scale(2); , третье — результат применения transform: scale(0.5) , а четвертое — результат применения transform: scale(0.5, 1.5); .
Обратите внимание, как изображения накладываются друг на друга, так как преобразование каждого из них не влияет на поток контента вокруг него:
Следующее изображение является результатом применения преобразования CSS transform scale ( и его вариаций ) с отрицательными значениями:
scaleX()
Функция scaleX() используется для масштабирования, растягивания или сжатия элемента, делая его больше или меньше, по оси х . Она принимает в качестве значения число sx , которое используется для изменения размера элемента по оси х .
Если указанное значение больше 1 , то элемент растягивается — он будет выглядеть шире по оси х . Если значение равно 1 , то элемент остается без изменений. Если значение больше 0 , но меньше 1 , то элемент сжимается.
Если значение равно 0 , то элемент исчезает. Отрицательные значения допустимы, но они не изменяют размеров элемента. Они задают поворот преобразуемого элемента по горизонтали ( как будто он поворачивается вокруг оси y ).
scaleY()
Функция CSS transform scaleY() используется для масштабирования, растягивания или сжатия элемента в размерах по оси у . Она принимает в качестве значения число sу , которое используется для изменения размера элемента по оси y .
Если указанное значение больше 1 , то элемент растягивается — он будет выглядеть выше по оси y . Если значение равно 1 , то элемент остается без изменений. Если значение больше 0 , но меньше 1 , то элемент сжимается. Если значение равно 0 , то элемент исчезает.
Отрицательные значения допустимы, но они не изменяют размеров элемента. Фактически они задают поворот преобразуемого элемента по вертикали ( как будто он поворачивается вокруг оси x ).
rotate()
Функция rotate() используется для вращения элемента в двухмерном пространстве. Элемент поворачивается на угол, который передается функции. Элемент вращается вокруг начала координат, как это определено свойством transform-origin .
Положительное значение задает вращение элемента по часовой стрелке. Отрицательное значение — против часовой стрелки.
На следующем рисунке показан результат применения к изображению положительного, а затем отрицательного значения функции CSS transform rotate . Обратите внимание на то, как изображения накладываются друг на друга, так как преобразование каждого из них не влияет на поток контента вокруг него:
Функция skew() используется для наклона ( скоса ) элемента. Наклон элемента выглядит, как применение для него эффекта скоса. Функция принимает один или два аргумента: ax и ay . Оба являются значениями углов. Первое значение ( ах ) скашивает элемент вдоль оси х , а второй аргумент ( ау ) — вдоль оси у .
Скашивание вдоль оси х похоже на то, если бы мы потянули противоположные углы в противоположные стороны, а скашивание вдоль оси у — если бы мы потянули противоположные углы вертикально в противоположных направлениях ( вверх и вниз ). Два значения определяют величину, на которую скашивается элемент. Если второе значение не указано, оно считается равным 0 .
Функция transform skew CSS присутствовала в ранних версиях спецификации. Она был удалена из нее, но по-прежнему присутствует в некоторых реализациях. * Не используйте ее *. Чтобы скосить элемент в любом направлении, используйте функции skewX() и skewY() , описанные ниже. Также обратите внимание на то, что поведение функции skew() отличается от умножения преобразований skewX() и skewY() .
skewX()
Функция skewX() используется для наклона элемента. Наклон элемента выглядит, как применение для него эффекта скоса. В случае с skewX() , процесс похож на то, если бы мы захватили две противоположные вершины прямоугольника и потянули их в противоположных направлениях вдоль оси x , превращая прямоугольник в параллелограмм.
Функция принимает в качестве значения ax . Элемент скашивается на величину угла. Можно представить себе, что мы растягиваем две противоположные вершины прямоугольника в противоположных направлениях до тех пор, пока внутреннее значение этих углов не достигнет 90 градусов ( ах ).
Если значение угла положительное, « растягиваются » левый верхний и нижний правый углы прямоугольника. Если значение отрицательное — верхний правый и нижний левый угол. При значении угла в 90 градусов ( или -90 градусов ) элемент исчезнет. Значение 180 градусов ( или -180 градусов ) оставит его без изменений.
На приведенном ниже рисунке показан результат применения к изображению skewX() с положительным, а затем с отрицательным углом одной и той же величины:
Наклон элемента также искажает систему координат. Когда система координат скашивается, последовательные преобразования могут привести к неожиданным результатам, если не рассчитать их на основе новой системы координат. Узнать больше о системах координат в CSS и SVG можно здесь .
skewY()
Функция skewY() используется для наклона элемента. Наклон элемента выглядит, как применение для него эффекта скоса. В случае с skewY() , процесс похож на то, если бы мы захватили две противоположные вершины прямоугольника и потянули их в противоположных направлениях вдоль оси y , превращая прямоугольник в параллелограмм.
Функция CSS transform принимает в качестве значения ау . Элемент скашивается на величину угла. Можно представить себе, что мы растягиваем две противоположные вершины прямоугольника в противоположных направлениях до тех пор, пока внутреннее значение этих углов не достигнет 90 градусов – ау .
Если значение угла положительное, « растягиваются » левый верхний и нижний правый угол прямоугольника. Если значение отрицательное — верхний правый и нижний левый. При значении угла 90 градусов ( или -90 градусов ) элемент исчезнет. Значение 180 градусов ( или -180 градусов ) оставит его без изменений.
На следующем рисунке показан результат применения к изображению skewY() с положительным, а затем с отрицательным углом одной и той же величины:
Следует помнить, что наклон элемента также искажает его систему координат.
matrix()
Функция matrix() используется для указания двухмерной матрицы преобразования. Она может быть использована для объединения нескольких преобразований в одно. Например, вместо использования двух ( или более ) функций преобразования ( смотрите выше ) в одном объявлении, например, следующим образом:
С помощью функции CSStransform matrix можно объединить эти два преобразования в одну матрицу:
Вычислить значения функции matrix3d() будет нелегко. К счастью, Эрик Мейер и Аарон Густафсон создали весьма полезный инструмент , который может выполнить расчеты вместо вас. Все, что нужно сделать, это ввести значения transform , которые вам нужны, и нажать на красную кнопку, чтобы инструмент сгенерировал для вас эквивалентную функцию matrix() .
Функции 3D-преобразования:
translateZ()
Функция translateZ() используется для перемещения элемента на заданное расстояние вдоль оси z . Значение tz задается в единицах длины ( проценты здесь не допускаются ). Если единицы измерения не указаны, число будет рассматриваться, как « пользовательские единицы «.
Положительное значение перемещает элемент вдоль положительного направления оси z , а отрицательное значения — в противоположном направлении.
translate3d()
Функция translate3d() является трехмерным аналогом функции CSS transform translate . Она используется, чтобы переместить элемент по вектору [tx, ty, tz] , где tx — смещение вдоль оси х , ty — смещение вдоль оси у , а tz — смещение вдоль оси z . Значения tx и ty указываются в единицах длины или процентах. Значение tz должно указываться в единицах длины и не может задаваться в процентах. Если единицы измерения не указаны, число будет рассматриваться, как « пользовательские единицы «.
Положительные значения перемещают элемент вдоль положительного направления осей, а отрицательные значения — в противоположном направлении.
scaleZ()
Функция scaleZ() используется для масштабирования элемента в третьем измерении, вдоль оси z . Она принимает в качестве значения число без единиц измерения sz , которое используется для изменения размеров элемента в соответствующем направлении.
Формально, scaleZ() масштабирует элемент вдоль оси z . Но фактически, это выглядит наподобие того, как если бы масштабировалась ( сжималась / растягивалась ) сама ось z , а затем элемент смещался бы вместе с осью после ее масштабирования.
Эффект CSS transform scaleZ более очевиден, когда у вас есть элемент с заданной перспективой, который вращается в трехмерном пространстве или перемещается вдоль оси z .
В первом примере у нас есть два элемента, которые расположены в трехмерном пространстве и перемещаются вдоль оси z с помощью функции translateZ() . Оба перемещаются на одинаковое расстояние. Затем мы масштабируем второй элемент ( правый ), используя scaleZ(2) . На следующем рисунке показан результат применения преобразований, а также разница между этими двумя элементами после масштабирования второго с помощью функции scaleZ .
Обратите внимание, что второй элемент выглядит больше, потому что его позиция по оси z была уменьшена, так как была уменьшена сама ось. Он выглядит расположенным ближе к вам и, следовательно, больше. Но его фактические ширина и высота не изменились:
Другой пример, на котором можно четко проследить эффект применения scaleZ . Два элемента сначала преобразуются одинаковым образом, но вместо перемещения в трехмерном пространстве мы вращаем их по оси х с помощью функции rotateX . Второй элемент ( справа ) был уменьшен по оси z с помощью функции scaleZ() . Обратите внимание, что он выглядит расположенным ближе к вам и, таким образом, больше:
Вы должны применять CSS transform к этим двум элементам в том же порядке, чтобы на самом деле увидеть эффект scaleZ . Порядок преобразований имеет значение, и различная очередность преобразований приведет к различным результатам.
scale3d()
Функция scale3d() является трехмерным аналогом функции scale() . Она используется для сжатия или растягивания элемента, делая его больше или меньше. Функция принимает в качестве значений три числа без единиц измерения: sx , sy , и sz . Где: sx масштабирует элемент по оси х , sy — по оси у , а sz — по оси z .
Если заданное значение больше 1 , элемент растягивается в соответствующих направлениях и будет выглядеть больше. Если значение равно 1 , то он остается неизменным ( в соответствующих направлениях ). Если значение больше 0 , но меньше 1 , то элемент сжимается.
Если значение равно 0 , то элемент исчезает. Отрицательные значения допускаются, но они не масштабируют элемент. На самом деле отрицательные значения sx и sy поворачивают элемент по соответствующей оси.
rotate3d()
Функция rotate3d() является трехмерным аналогом функции CSS transform rotate . Она используется для вращения элемента в трехмерном пространстве. Элемент поворачивается на угол, который передается в качестве четвертого параметра. Первые три параметра определяют направление вращения, и вместе они образуют направление вектора [x, y, z] , который используется, чтобы применить вращение в заданном направлении.
Положительное значение угла задает вращение элемента по часовой стрелке вдоль соответствующей оси, а отрицательное значение — против часовой стрелки вдоль этой оси.
На следующем рисунке показаны положительные направления вращения ( по часовой стрелке ) по трем осям:
Первые три параметра rotate3d() указывают направление вектора, вдоль которого будет происходить вращение, а угол — указывает направление: по часовой стрелке по вектору или против часовой стрелки.
На следующем рисунке показан результат применения к изображению преобразования rotate3d (1, 1, 1, 50deg); :
rotateX()
Функция rotateX() используется для вращения элемента вокруг оси х в трехмерном пространстве. Это эквивалентно:
где CSS transform rotate3d — это функция преобразования, используемая для вращения элемента в трехмерном пространстве.
Функция принимает в качестве значение угол. Элемент поворачивается на указанное значение вокруг оси х. Если значение положительное, элемент поворачивается по часовой стрелке, если отрицательное элемент — против часовой. Направление по часовой стрелке определяется, если смотреть на ось х с конца (где, как правило, размещается стрелка указателя направления) на начало координат.
На следующем рисунке показан результат применения к изображению rotateX(50deg) и rotateX(-50deg) :
rotateY()
Функция rotateY() используется для вращения элемента вокруг оси y в трехмерном пространстве. Это эквивалентно:
где rotate3d — это функция преобразования, используемая для вращения элемента в трехмерном пространстве.
Функция принимает в качестве значения угол. Элемент поворачивается на указанное значение вокруг оси у . Если значение положительное, элемент поворачивается по часовой стрелке, если отрицательное — против часовой стрелки
На следующем рисунке показан результат применения к изображению rotateY(50deg) и rotateY(-50deg) :
rotateZ()
Функция CSS transform rotateZ() используется для вращения элемента вокруг оси z в трехмерном пространстве. Это эквивалентно:
где rotate3d — это функция преобразования, используемая для вращения элемента в трехмерном пространстве.
Элемент поворачивается на указанное значение вокруг оси z . Если значение положительное, элемент поворачивается по часовой стрелке, если — против часовой стрелки.
Примеры:
На следующем рисунке показан результат применения к изображению rotateZ(50deg) и rotateZ(-50deg) :
matrix3d()
Функция matrix3d() является трехмерным эквивалентом функции matrix() . matrix3d() используется для объединения преобразований в одну матрицу и описания последовательностей трехмерных преобразований в сетке 4 ; 4 .
Например, вместо того, чтобы использовать две ( или более ) функции преобразования в одном объявлении следующим образом:
Можно объединить эти два преобразования в одну матрицу с помощью функции CSS transform matrix3d() :
perspective()
Техническое описание:
Функция perspective() задает матрицу перспективной проекции. Эта матрица масштабирует точки в X и Y , основываясь на их значениях Z , масштабируя точки с положительными значениями Z в направлении от начала координат, а с отрицательными значениями Z — в направлении к началу координат.
Точка на плоскости Z = 0 не изменяются. Значение длины, передаваемое в функцию, определяет расстояние от плоскости Z = 0 до зрителя. Более низкие значения дают более сплюснутую пирамиду и, следовательно, с перспективой эффект становится более выраженным. Например, значение длины 1000 пикселей в перспективе задает небольшие изменения, а значение 200 пикселей — намного большие. Значение глубины должно быть больше 0 , в противном случае функция является недействительной:
Функция CSS transform perspective() используется, чтобы задать глубину элемента, делая элементы, расположенные выше по оси z ( ближе к зрителю ), выглядящими больше, а элементы, расположенные дальше — выглядящими меньше. Чем меньше значение, тем ближе плоскость z к зрителю и тем больше выражен эффект. Чем выше значение, тем дальше от экрана расположен элемент и тем меньше наблюдаются изменения в перспективе.
Функция perspective() используется для активации трехмерного пространства, когда вы применяете к элементу трехмерное преобразование, используя любую из перечисленных выше функций. Указание перспективы важно, иначе трехмерный эффект будет выглядеть плоским и двухмерным.
Перспектива может быть применена с помощью функции perspective() или с помощью свойства perspective . Существует большая разница между этими двумя методами. Я лишь отмечу, что функция perspective() применяется к элементу, который трансформируется в 3D-пространстве , в то время как свойство perspective применяется к элементу, дочерние элементы которого в преобразуется в 3D-пространстве .
В этой статье мы сосредоточимся на использовании perspective() при применении к элементу преобразования в трехмерном пространстве, без перспективы, задаваемой для его контейнера.
Например, если нужно повернуть элемент вокруг оси у , используя функцию CSS transform rotateY() , то необходимо указать перспективу, чтобы создать трехмерное пространство для трехмерных преобразований. Иначе вращение будет выглядеть плоским и двухмерным. На следующем рисунке показана разница между изображением, вращаемым в трехмерном пространстве с перспективой, и изображением, вращаемым без перспективы:
Функция perspective() принимает в качестве параметра значение длины. Чем меньше его значение, тем ближе плоскость z от зрителя, и тем более заметен эффект. Чем выше значение, тем дальше элемент от экрана и менее заметен эффект. На следующем рисунке показан результат применения к элементу разных значений perspective() :
Если есть несколько элементов, преобразуемых в трехмерном пространстве, которые при этом принадлежат одному контейнеру, рекомендуется использовать для родительского элемента свойство perspective , вместо того, чтобы использовать для каждого отдельного элемента функцию perspective() . Иначе эффект будет не таким, как ожидалось, так как функция perspective() задает для каждого элемента собственную точку схождения. Применив свойство perspective к контейнеру, вы обеспечите для всех элементов внутри него общую точку схождения.
Примечания
Элемент может быть перемещен с помощью свойства CSS position и его связанных свойств. Но лучше перемещать элемент с помощью функции CSS transform translate , потому что она задействует аппаратное ускорение и обеспечивает более высокую производительность. Функция translate3d() также иногда используется, чтобы применить аппаратное ускорение при анимировании элементов в WebKit-браузерах . Это позволяет создать более плавную анимацию.
Примеры
В следующем примере мы перемещаем и поворачиваем элемент, а затем растягиваем его. Преобразования являются двумерными, поэтому необходимости в перспективе нет:
Следующий пример относится к трехмерному преобразованию. Элемент будет повернут вокруг оси y так, что его передняя сторона будет направлена на правую сторону экрана. Элемент также перемещается вдоль оси z , что заставляет его двигаться к правой стороне экрана. Это происходит потому, что после того, как элемент был повернут вокруг оси y , ось z больше не указывает в сторону наблюдателя. Помните, что поворот элемента поворачивает и всю его систему координат.
В этом transform CSS примере к элементу применяется перспектива с помощью функции perspective() :
Можно выполнить то же самое преобразование, но вместо того, чтобы применять к элементу перспективу, можно активировать в контейнере 3D-пространство :
Интерактивная демо-версия
Кликните по элементу в приведенной ниже демо-версии, чтобы увидеть его преобразование в трехмерном пространстве. Эффект преобразования применяется после клика с помощью JavaScript . При нажатии на элемент более одного раза переключается класс .transform , который содержит преобразования. CSS-переходы используются, чтобы сделать преобразование плавным.
Поддержка браузерами
Ниже приводится таблица поддержки двухмерных CSS-преобразований :
Поддержка 2D-преобразований CSS3
Метод преобразования элемента, включая вращение, масштабирование и т.д., включает поддержку свойства CSS transform , а также свойства transform-origin .
Текущий статус: рабочий проект W3C
Поддерживается со следующих версий:
Стационарные | Мобильные | ||||||||
Chrome 4 * | Firefox |
3.5 *
3.2 *
вается
Ниже приводится таблица поддержки трехмерных преобразований CSS :
Поддержка 3D-преобразований CSS3
Метод преобразования элемента в трех измерениях с помощью свойства CSS transform включает поддержку свойства perspective для установки перспективы в z-пространстве и свойства backface-visibility для переключения отображения обратной стороны преобразуемого элемента.
Текущий статус: рабочий проект W3C
Поддерживается со следующих версий:
Стационарные | Мобильные | ||||||||
Chrome 12 * | Firefox 10 * | IE 15 * | Opera 4 * | Safari 3.1 * | Chrome 3.2 * | Firefox 3 * | IE 37 | Opera 54 | Safari 50 |
Поддержи-вается | Поддержи-вается | Частично | Поддержи-вается | Поддержи-вается | Поддержи-вается | Поддержи-вается | Поддержи-вается | Поддержи-вается | Поддержи-вается |
Пожалуйста, опубликуйте ваши мнения по текущей теме материала. За комментарии, отклики, лайки, дизлайки, подписки низкий вам поклон!
Источник