Главная » Frontend » 2.20. CSS3-трансформации
2018/07/07Метки:

2.20. CSS3-трансформации

Основное назначение CSS3-трансформаций в стилевом оформлении в ходе выполнения вёрстки некоторого элемента или всей страницы в целом — это преобразование формы, вращение, изменение расположения и так далее.

В CSS существует две разновидности трансформирования: двухмерное (2D) и трехмерное (3D). Двухмерное происходит в пространстве, состоящем из двух плоскостей. Как известно из курса математики, оно называется декартовой или прямоугольной системой координат. Трехмерное происходит в пространстве, в которое входит три плоскости (X, Y и Z). В этом материале подробно коснемся 2D CSS3 transform.

Следует отметить, что в соответствии с принятым стандартом трансформации применимы только к тэга, у которых правило display равно:

Среди браузеров, в которых срабатывает рассматриваемое свойство как с доп префиксом, так и напрямую:

ИЕ: 10.0, 9.0 -ms-
ЭДж: 12.0
Firefox: 16.0, 3.5 -moz-
Хром: 36.0, 4.0 -webkit-
Сафари: 9.0, 3.1 -webkit-
Опера: 23.0, 15.0 -webkit- (-о-)
Маковский сафари: 9, 7.1 -webkit-
Андройд Браузер: 53, 2.1 -webkit-
Хром (под андройдом): -webkit-

1. Функции двухмерной трансформации transform

Свойство представляет собой набор опций, среди которых доступны разные функции трансформирования. Является не наследуемым. Разберем его подробнее:

transform
Значения:
none Служит для отмены какого-либо трансформирования элемента. Является опцией, которая устанавливается по умолчанию.
matrix(i,j,k,m,x,y) Данное матричное преобразование представляет собой синергию (сочетание) нескольких функций трансформирования. Доступные параметры трансформирования: вращение, изменение масштаба, изменение угла наклона и местоположения контейнера.
Параметр i предназначен для масштабирования html-блока по горизонтальной декартовой линии координат. При 0 < i < 1 происходит уменьшение, а при i > 1 происходит увеличение по ширине.
Параметр j применяется для деформации хтмл-контейнера по вертикали. -? < j < +?
Значение k применяется для деформации хтмл-контейнера по горизонтали. -? < k < +?
Переменная m предназначена для масштабирования html-блока по вертикальной декартовой линии координат. При 0 < m < 1 происходит уменьшение, а при m > 1 происходит увеличение по ширине.
Переменная x в матрице задает смещение по X-ой координате. -? < x < +?.
Переменная y в матрице задает смещение Y-ой координате. -? < y < +?.
translate(x,y) Предназначена для смещения хтмл-блока по горизонтальной и вертикальной воображаемым осям одновременно. Входные переменные могут иметь как отрицательное, так и положительное значение. Следует отметить, что эта функция влияет только на визуальное смещение элемента, его фактическое местоположение остается тем же. То есть иными словами — сдвиг не оказывает влияние на местоположение других блоков.
translateX(n) Предназначена для смещения html-блока по горизонтальной линии декартова пространства на n единиц, которые могут как в отрицательную, так и положительную стороны.
translateY(n) Предназначена для смещения html-блока по вертикальной линии декартова пространства на n единиц, которые могут быть отрицательными и положительными.
scale(x,y) Предназначена для масштабирования элемента одновременно в двух направлениях (по ширине и высоте): x — по воображаемой горизонтальной линии, y — по воображаемой вертикальной. Оба входных значения могут быть минусовыми и плюсовыми. При минусовых величинах формируется зеркальное отображение. При 0 < x < 1 объект уменьшается, а при x > 1 увеличивается по ширине. Для y аналогично, но по высоте.
scaleX(n) Применяется для масштабирования (сужения, растяжения по ширине) текущего html-контейнера вдоль воображаемой горизонтальной оси декартова пространства. При 0 < n < 1 объект уменьшается, а при n > 1 увеличивается по ширине. При n = 1 хтмл-объект будет иметь реальную ширину без изменений. n может быть как положительным, так и отрицательным. При минусовых величинах объект принимает зеркальное отображение.
scaleY(n) Применяется для масштабирования (сужения, растяжения по высоте) текущего html-контейнера вдоль воображаемой вертикальной оси декартова пространства. При 0 < n < 1 объект уменьшается, а при n > 1 увеличивается по высоте. При n = 1 хтмл-объект будет иметь реальную высоту без изменений. n может быть как положительным, так и отрицательным. При минусовых величинах объект принимает зеркальное отображение.
rotate(n) Применяется для поворота объекта на n-ое число градусов (некоторый угол). n может быть как положительным (вращение по ходу стрелки часов), так и отрицательным (вращение против хода стрелки часов). Одно полное вращение элемента равно 360 градусов. Формат записи угла: число и deg, grad, rad или turn.
skew(x-угол,y-угол) Предназначено для деформарования хтмл-элемента по x-ой и y-ой осям пространства, то есть в ширину и высоту одновременно. Формат значения: число и deg, grad или rad.
skewX(n) Предназначена для деформации хтмл-контейнера по воображаемой горизонтальной оси.
skewY(n) Используется для деформации хтмл-контейнера по воображаемой вертикальной оси.
initial Будет установлено в первоначальное значение.
inherit Унаследовать правило от родителя.

Формат записи

.b-square-2
{
	transform: matrix(1.4,0,0.7,1.3,33,0);
}

.b-square-2
{
	transform: translate(-15px, 15px);
}

.b-square-2
{
	transform: translateX(-15px);
}

.b-square-2
{
	transform: translateY(-15px);
}

.b-square-2
{
	transform: scale(0.3, 1.5);
}

.b-square-2
{
	transform: scaleX(0.3);
}

.b-square-2
{
	transform: scaleY(-1.5);
}

.b-square-2
{
	transform: rotate(30deg);
}

.b-square-2
{
	transform: skew(-45deg, 55deg);
}

.b-square-2
{
	transform: skewX(-45deg);
}

.b-square-2
{
	transform: skewY(55deg);
}

2. Координаты центра трансформации transform-origin

Свойство предназначено для переноса координат центра трансформирования в пределах блока. Эти координаты могут быть заданы специальными акронимами, в пикселях (можно использовать и другие единицы) или в процентах. Если данное правило не прописывать, то интерпретатор стилей сообщит браузер автоматически взять в качестве центра середину блока.

transform-origin
Значения:
x, y Переменная X отвечает за сдвиг по горизонтальной линии прямоугольной системы координат и может быть задана: акронимами (leftright, center), пикселями (или др) или процентами. Переменная Y отвечает за сдвиг по вертикальной линии той же системы и может быть задана: акронимами (top, bottom , center), пикселями (или др) или процентами. Каждая переменная может принимать как положительные, так и отрицательные величины.  Процентные величины могу превышать 100% (при этом середина трансформирования еще больше смещается относительно центра).
initial Будет установлено в исходное значение.
inherit Берет значение у родительского блока

Формат записи

.b-square-2
{
	-webkit-transform-origin: left top; 
	-ms-transform-origin: left top;
	transform-origin: left top;
}

.b-square-2
{
	-webkit-transform-origin: 200% 220%;
	-ms-transform-origin: 200% 220%;
	transform-origin: 200% 220%;
}

.b-square-2
{
	-webkit-transform-origin: 33px 22px;
	-ms-transform-origin: 33px 22px;
	transform-origin: 33px 22px;
}

3. Множественные трансформации

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

.b-square
{
	transform: translateX(20px) rotate(-45deg);
	-ms-transform: translateX(20px) rotate(-45deg);
	-webkit-transform: translateX(20px) rotate(-45deg);

	background-color: #84cd1b;
	width: 30px;
	height: 30px;

	left: 20px;
	top: 20px;
	position: relative;
}

4. Примеры css transform

Для большей наглядности применения описанных выше трансформаций приведем следующий код и пример реальной верстки наклонной бирки «Новинка» над картинкой:

css:

.b-ramka
{
	width: 300px;
	height: 220px;
	border: 1px solid #1E824C;
	margin: 0px;
	padding: 0px;
}

.b-pic
{
	width: 240px;
	height: 160px;
	margin: 0px;
	padding: 0px;
	position: relative;
	overflow: hidden;
	top: 50%;
	margin-top: -90px;
	left: 50%;
	margin-left: -115px;
}

.b-pic img
{
	position: relative;
	right: 10px;
	top: 10px;
}

.b-pic:before, .b-pic:after
{
	content: '';
	position: absolute;
	background-color: #ac2126;
}

.b-pic:before
{
	width: 40px;
	height: 10px;
	right: 92px;
	border-radius: 9px 9px 0px 0px;
}

.b-pic:after
{
	width: 10px;
	height: 40px;
	right: 0px;
	top: 92px;
	
	border-radius: 0px 9px 9px 0px;
}

.b-birka
{
	border: 1px dashed #fff;
	background-color: #e1373e;
	text-align: center;
	z-index: 3;
	
	
	width: 200px;
	height: 35px;
	
	color: #fff;
	font-family: Arial;
	text-transform: uppercase;
	font-weight: bold;
	line-height: 34px;
	
	position: absolute;
	top: 30px;
	right: -50px;

	margin: 0px;
	padding: 0px;
	
	box-shadow: 0 0 0 3px #e1373e, 0px 20px 4px -16px rgba(0,0,0,0.7);
	
	transform: rotate(45deg);
	-webkit-transform: rotate(45deg);
	-ms-transform: rotate(45deg);
}

html:

<div class="b-ramka">
	<div class="b-pic">
		<img src="http://paratapok.ru/examples/5041/css3-transform-4.jpg" width="240" />
		<div class="b-birka">Новинка</div>
	</div>
</div>

И на закуску приведем пример вёрстки заглушки с использованием разных функций трансформирования: http://paratapok.ru/frontend/4626_shablon-prostoj-html-zaglushki-dlya-sajta-s-naklonnymi-blokami/.

Прочитав, написанное в материале, Вы познакомились с одним из важнейших разделов ЦСС и убедились в том, насколько широки и удобны возможности влияния на визуальную форму отображения тэгов при разметке документа. Хотелось бы акцентировать внимание на том, что следует не забывать при верстке в файле стилей прописывать для отдельных версий обозревателей рассматриваемое правило с помощью спецпрефикосов: -o-, -ms-, -webkit- и так далее.

Метки: Метки:
Понравилась статья? — Ставь лайк!

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

×
Новости и обзор новинок рынка строительной техники.
Подпишитесь на обновления нашей группы!