Эта статья является частью нашей серии CSS AtoZ. Вы можете найти другие записи серии здесь .
Вы можете просмотреть полную транскрипцию и скринкаст на rotateY
здесь .
Добро пожаловать в нашу серию AtoZ CSS! В этой серии я буду изучать различные значения CSS (и свойства), каждое из которых начинается с другой буквы алфавита. Мы знаем, что иногда скринкастов просто недостаточно, поэтому в этой статье мы добавили краткий совет по преобразованию оси Y и матрицам.
Y для преобразования оси Y и матриц
Мы можем выполнять всевозможные интересные преобразования для элементов вдоль различных осей. В этом совете мы предоставим краткое изложение всех общих опций, а затем рассмотрим менее известное значение transform
transform
matrix()
transform
Поскольку исходный скринкаст фокусировался на rotateY()
Мы можем применить следующие преобразования:
-
transform: translateY(100px)
-
transform: rotateY(45deg)
-
transform: scaleY(1.5)
-
transform: skewY(30deg)
Все эти значения ограничены осью Y и могут использоваться для сообщения намерения, что выполняется единственное преобразование вдоль этой единственной оси.
rotateY()
При выполнении любого вида трехмерного transform
transform-style:preserve-3d
Многократное transform
Если вы хотите объединить несколько значений transform
Следующий фрагмент кода объединяет перевод с skew
.element {
transform: translateY(50px) skew(30deg);
}
Это все хорошо, но если вы устанавливаете несколько transform
transform
Существует немного более сложный, но гораздо более мощный метод настройки transform
matrix()
Установить комплексное transform
matrix()
matrix()
scale
skew
translate
.element {
transform: matrix(a, b, c, d, e, f);
}
В основе этой техники лежит довольно сложная математика, которая всегда мешала моему мозгу пытаться понять. Поэтому вместо того, чтобы пытаться объяснить математические матрицы, точечные произведения и векторы, давайте посмотрим, к чему относится каждый из параметров в matrix()
Если вы хотите полностью погрузиться в математику, прочитайте эту статью от User Agent Man .
В приведенном выше фрагменте я пометил каждый аргумент функции матрицы другой буквой от a
f
a
d
b
c
Наконец, e
f
Одна вещь, которая делает всю эту matrix()
Длина — это такие значения, как 100px
30deg
Чтобы продемонстрировать это, приведенный ниже фрагмент дает два идентичных визуальных результата; один, использующий многократное transform
.one {
transform: scale(1.5, 1.5) skew(10deg, 10deg) translate(100px, -50px);
}
.two {
transform: matrix(1.5, 0.26449, 0.26449, 1.5, 136.775, -48.551);
}
Вот кодекс приведенного выше фрагмента, чтобы вы могли увидеть идентичный результат:
Поскольку значение matrix()
Здорово, если вы выполняете много математических операций с JavaScript для проработки всех различных составных частей матрицы, но писать вручную очень сложно.
Если вы хотите углубиться в матрицы, вы можете «проверить элемент» на любом преобразованном элементе и посмотреть на вкладку «вычисленные стили». Матрица для применяемого transform