CSS 5DX

Oleksandr Pavlyshch.

astound_clients

CSS 5DX

css_5dx
awwwards.jpgcss-design-awards.pngfwa.png
oskar-and-dicaprio.jpg

12. 01. 2016

Перекос

Some text with
transform: skew(),
instead image
it's cool!
left
right
up
down

transform: skew(angle)

Задает скос элемента относительно осей X и Y, и точки задаваемой свойством transform-origin.

.element {
	transform: skew(30deg [, 30deg ]?);
}
walter_white_breaking_bad
.element {
	transform: skewX(30deg);
}
.heisenberg {
	transform: skewX(-30deg);
}
walter_white_breaking_bad
.element {
	transform: skewY(30deg);
}
.heisenberg {
	transform: skewY(-30deg);
}
walter_white_breaking_bad

Перспектива

perspective: none | length;

Задает глубину сцены родителю

.wrapper {
	perspective: 200px;
}
.block1 {
	width: 300px
	transform: rotateY(60deg);
}
block 1

transform: perspective( length )

3адает глубину сцены конкретному елементу

.block1 {
	transform: perspective(200px) rotateY(60deg);
}
.block2 {
	transform: perspective(400px) rotateY(60deg);
}
block 1
block 2

Точка обзора

perspective-origin:

Устанавливает точку с которой зритель смотрит на сцену по осям X и Y.

.wrapper {
	perspective-origin: [ key-word | % | length ]
}

Точка трансформации

transform-origin: X, Y [,Z]?

Устанавливает координаты точки, относительно которой будет происходить трансформация элемента.

.element{
	transform-origin: 50% 50% 0;
}
.element{
	transform-origin: 50% 4px;
}
bell
.element{
	transform-origin: left center;
}
bell

Включаем 3D

transform-style:

Определяет как вложенные элементы будут отображаться в трехмерном пространстве.

.wrapper {
	transform-style: flat | preserve-3d;
}
.wrapper {
	transform-style: flat;
}
transform: translateZ(-100px) rotateY(45deg);
transform: translateZ(50px) rotateX(20deg);
.wrapper {
	transform-style: preserve-3d;
}
transform: translateZ(-100px) rotateY(45deg);
transform: translateZ(50px) rotateX(20deg);

А что сзади

backface-visibility:

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

.element {
	backface-visibility: [ visible | hidden ];
}
.element {
	backface-visibility: visible;
}
.element {
	backface-visibility: hidden;
}

Перемещение

zameckezahrady
retailsolutions
jahre bucherer

transform: translate( value )

Задает сдвиг элемента относительно осей X, Y, Z и точки задаваемой свойством transform-origin.

.element {
	transform: translate( 100px [, 50% ]? );
}
.element {
	transform: translateX( 100px );
}
translateX(100px)
.element {
	transform: translateY( 100px );
}
translateY(100px)
.element {
	transform: translateZ( 100px );
}
translateZ(100px)
.element {
	transform: translate3d(0, 50px, 100px);
}
translateX(50px)
translateY(50px)
translateZ(100px)

Повороты

socruta
rdcm

transform: rotate( angle );

Задает поворот элемента относительно осей X, Y, Z и точки задаваемой свойством transform-origin.

.element {
	transform: rotateZ( 30deg );
}
rotateZ( 360deg )
rotate( 360deg )
.element {
	transform: rotateX( 60deg );
}
rotateX( 60deg )
.element {
	transform: rotateY( 30deg );
}
rotateY( 30deg )
.element {
	transform: rotate3d( 1, 2, 3, 30deg );
}
30deg60deg90deg
rotate3d( 1, 1, 1, 360deg )

Увеличение

transform: scale( number );

Маштабирует элемент относительно осей X, Y и Z, и точки задаваемой свойством transform-origin.

.element {
	transform: scale( 1 [, 2 ]? );
}
.element {
	transform: scaleX( 1.5 );
}
scaleX(1.5)
.element {
	transform: scaleY( 1.5 );
}
scaleY(1.5)
.element {
	transform: scaleZ( 2 );
}
scaleZ(2) rotateX(50deg)
.element {
	transform: scale3d( 1, 1, 2 );
}
scale3d(1, 1, 2) rotateX(50deg)

Маленький лайфхак

Если задать scale c минусовым значением блок отобразится зеркально.

.element {
	transform: scale( -1 );
}
BatmanPikachu

Матрицы

transform: matrix(a, b, c, d, e, f)

Описывает в виде матрицы 2D преобразования элемента.

.element {
	transform: matrix( a, b, 0,
					   c, d, 0,
					   tx, ty, 0 );
}

transform: matrix3d()

Описывает в виде матрицы 3D преобразования элемента.

.element {
	transform: matrix3d( sx, 0, 0, 0,
 						 0, sy, 0, 0,
 						 0, 0, sz, 0,
 						 0, 0, 0, 1 );
}

Предупреди браузер

will-change: auto | prop [, prop]?

Свойсто will-changeпозволяет заранее проинформировать браузер об изменениях, которые возможно будут применены к элементу. И применить к нему апаратное ускорение.

Attention JS (event)

requestAnimationFrame

var frameId;
function repeatOften() {
	//magic
	frameId = requestAnimationFrame(repeatOften);
}
cancelAnimationFrame(frameId);

Event throttle

var lastMove = 0;
var myEventInterval = 40;//for example
element.addEventListener( "mousemove", function() {
	if(Date.now() - lastMove > myEventInterval) {
		eventHendler(event);
		lastMove = Date.now();
	}
});

Fork me on GitHub