Приключения в третьем измерении: CSS 3D преобразования

Еще в 2009 году, команда WebKit развития предложена новая расширения CSS, который позволит элементы веб-страниц для отображения и превращается в трехмерной плоскости.

Это предложение было называть 3D Transforms, и вскоре он был реализован в Safari для Mac и IOS.Примерно через год, следует поддерживать для Chrome, а в начале 2011 года для Android.Вне WebKit, однако, ни один из других производителей браузера, казалось, проявлял большого энтузиазма в его, так что он остается довольно нишу и недостаточно feature.

Это должно измениться, хотя, как Firefox и Internet Explorer команды решили вступить в партию путем внедрения 3D преобразования в предварительные версии своих браузеров.Таким образом, если все пойдет по плану, мы увидим их в IE 10 и в ближайшем будущем версии Firefox (возможно, 10 или 11, но это не подтверждено), оба из которых планируется к выпуску уже в этом year.

В таком случае, это идеальное время, чтобы получить на опережение и начать изучать возможности и потенциал добавив дополнительное измерение в ваши веб-страницы.Эта статья призвана помочь вам сделать это, взяв вас на полеты тур по 3D преобразования syntax.

Пожалуйста, имейте в виду, что для того, чтобы увидеть примеры в этой статье, вам понадобится браузер, который поддерживает 3D преобразования, как я пишу это, это Safari, Chrome, IE 10 Платформа Preview или Firefox Aurora.

Третий Dimension

В Интернете, мы привыкли работать в двух измерениях: все элементы имеют ширину и высоту, и мы перемещать их по экрану по горизонтали (слева направо) и по вертикали (сверху вниз).Переход к третьему измерению можно рассматривать как добавление глубины к элементам, и добавив движение в сторону и от вас (зрителя).Подумайте о том, 3D фильмов, в которых объекты постоянно тяги из экрана к вам в попытке продемонстрировать возможности дополнительного depth.

Для 3D-преобразования в CSS, вам нужно знать о осях (это множественное число от оси, не множественное число от топора).Если Вы уже знаете о работе в трех измерениях или вспомнить использованием осей на уроках математики в школе, вы можете пропустить следующий раздел.Для всех остальных, вот …

Быстрый грунт на Axes

Я только что говорил, что на 2-D Web, мы перемещать элементы по горизонтали и вертикали.Каждое из этих направлений называют оси: горизонтальная линия известна как X-axis, а вертикальная линия у-axis.Если мы думаем о левом верхнем углу элемента, как наше происхождение (то есть точка, из которой измеряется движение), движение налево отрицательное движение вдоль оси х, и двигаться вправо является положительнымДвижение вдоль оси х.То же самое касается перемещенияэлемент вверх (отрицательный по оси ординат) и вниз (положительного на оси ординат)

Третье измерение известен как г-axis, и, как я уже сказал, можно рассматривать как по отношению к себе или от себя, отрицательное движение вдоль оси находится далеко от вас, и положительное движениек you.

screenshot Показаны трех осей. Х (слева направо), у (вверх-вниз) и г (далеко-к)

Если вы читали все эти разговоры о топорами и отрицательных движениях, и вы протирая глаза и моргая в неверие и непонимание, не волнуйтесь: это все станет ясно, когда вы застряли в коде.Вернитесь и прочитайте это снова через несколько примеров, и все должны быть clear.

Преобразование Functions

Различных преобразований все наносится с помощью одного свойства CSS: transform — да, тем же свойством, который используется для 2-D CSS преобразований.На данный момент, это свойство до сих пор считается экспериментальным, так что не забудьте использовать все браузера префиксов, например, так:

div {
  -moz-transform: foo;
  -ms-transform: foo;
  -o-transform: foo;
  -webkit-transform: foo;
}

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

Во всяком случае, transform свойство принимает ряд функций как значений, каждое из которых применяет различные преобразования.Если вы использовали 2-D преобразования CSS, то вы уже знаете, многие из этих функций, потому что они очень похожи (или, в некоторых случаях, то же самое).Здесь все 3D-функции:

  • matrix3d
  • perspective
  • rotateX, rotateY, rotateZ rotate3d
  • scaleX scaleY scaleZ scale3d
  • translateX translateY translateZ translate3d

Сейчас на matrix3d определенно звучит самая крутая, но это так невероятно сложным (это занимает 16 значений!), Что нет никакого способа, я мог бы рассматривать его в этой статье.Так, скажем, что в сторону и взглянем на others.

Rotation

Чтобы объяснить, что это произойдет, мне придется попросить вас сделать небольшое умственное упражнение (которая пригодится позже в этой статье, тоже).Представьте себе лист карты со строкой, проходящей через середину, которая фиксирует его на месте.Принимая верхние углы в ваших пальцев, вы можете перемещать карту вверх и вниз, влево и вправо, и вперед и назад, поворот вокруг строки.Это то, что rotate() функция.Отдельные функции rotateX() rotateY() и rotateZ() принимать deg (т.е. степень) значение и переместить элемент вокруг своей точке происхождения (где строка проходит через нее) с тем, что much.

Обратите внимание на наш первый example (скриншот показан ниже в случае, если вы не имеете доступа к поддерживаемым браузером).Здесь мы поворачивается каждый из элементов 45 ° вокруг другой оси (в порядке убывания: X, Y, Z), так что вы можете увидеть эффект каждого из них.Полупрозрачный красный прямоугольник показывает исходное положение элемента, и если вы мыши над каждым, вы увидите преобразований удален (я использовал эту конвенцию во всех примерах, приведенных в этой статье)

screenshot Каждый элемент поворачивается на 45 ° вокруг другой оси. Х (слева), у (в центре) и Z (справа)

Существует rotate3d() функции, а также, но это слишком сложно объяснить в короткой статье, как эта, поэтому мы пропустим it.

Translation

Это на самом деле просто причудливый способ сказать функции translateX(), translateY() и translateZ() каждого дубля значение длины, которая перемещает элемент с тем, что расстояние вдоль данной оси.Таким образом, translateX(2em) сдвинет элемент 2 EMS вправо, и translateZ(-10px) бы переместить элемент на 10 пикселей от зрителя.Там также сокращение функций, translate3d(), который принимает три значения в порядке, по одному для каждой оси, вот так:. translate3d(x, y, z)

В наш второй example, мы переводе каждого из элементов на -20 пикселов вдоль другой оси. (В порядке убывания: X, Y, Z)

screenshot Каждый элемент переводится на -20 пикселов вдоль другой оси. Х (слева), у (в центре) и Z (справа)

Обратите внимание, что перевод элемент похож на относительное позиционирование, в том, что это не влияет на поток документа.Перевод элементом будет держать свои позиции в потоке и будет только appear для переехали, то есть она может охватывать или показать через окружающие elements.

Scaling

Это просто означает делать больше или меньше.Три функции scaleX() scaleY() и scaleZ() каждому …

Если вы хотите прочитать полностью статью, посетите сайт наших спонсоров

Comments are closed.