Функция rect()

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

Параметры rect()

Рис. 1. Параметры rect()

Параметры rect() начинаются с расстояния от верхнего края (на рисунке оно обозначено как top), затем идут по часовой стрелке.

Функция rect() применяется как значение следующих свойств:

  • offset-path — задаёт путь, по которому должен следовать элемент;
  • clip-path — определяет форму области отсечения.

Синтаксис

rect(
  [ <размер> | <проценты> | auto ]{4}
  [ round <border-radius> ]?
)
Описание Пример
<тип> Указывает тип значения. <размер>
A && B Значения должны выводиться в указанном порядке. <размер> && <цвет>
A | B Указывает, что надо выбрать только одно значение из предложенных (A или B). normal | small-caps
A || B Каждое значение может использоваться самостоятельно или совместно с другими в произвольном порядке. width || count
[ ] Группирует значения. [ crop || cross ]
* Повторять ноль или больше раз. [,<время>]*
+ Повторять один или больше раз. <число>+
? Указанный тип, слово или группа не является обязательным. inset?
{A, B} Повторять не менее A, но не более B раз. <радиус>{1,4}
# Повторять один или больше раз через запятую. <время>#

Значения

<размер>
Расстояние от левого или верхнего края области до соответствующей стороны прямоугольника в доступных единицах CSS, например — px, em, rem и др.
<проценты>
Расстояние до соответствующей стороны прямоугольника в процентах, они считаются от ширины или высоты области.
<auto>
Если auto используется для первого (сверху) или четвёртого (слева) значения, то auto принимается равным 0; если auto используется для второго (справа) или третьего (снизу) значения, auto принимается равным 100%.
round <border-radius>
Необязательное ключевое слово round означает, что у прямоугольника следует сделать скруглённые уголки. Используется тот же синтаксис, что и для свойства border-radius.

Пример

<!DOCTYPE html> <html lang="ru"> <head> <meta charset="utf-8"> <title>rect()</title> <style> .path { border: 1px solid #ccc; /* Параметры рамки */ border-radius: 20px; /* Радиус скругления */ height: 100px; /* Высота */ margin: 2rem; /* Расстояние от края до линии */ position: relative; /* Относительное позиционирование */ } .airplane { position: absolute; /* Абсолютное позиционирование */ width: 30px; /* Ширина картинки */ offset-path: rect(0 100% 100% 0 round 20px); /* Путь */ animation: move 10s linear infinite; /* Параметры анимации */ } @keyframes move { from { offset-distance: 0%; /* Начальное положение */ } to { offset-distance: 100%; /* Конечное положение */ } } </style> </head> <body> <div class="path"> <img src="image/airplane.svg" alt="Самолёт" class="airplane"> </div> </body> </html> <!DOCTYPE html> <html lang="ru"> <head> <meta charset="utf-8"> <title>rect()</title> <style> .photo { display: inline-block; /* Фотографии располагаются рядом */ } .photo:hover img { animation: clip 1s; /* Параметры анимации */ } @keyframes clip { 0% { clip-path: rect(0 0 100% 100%); } 50% { clip-path: rect(50% 50% 50% 50%); } 100% { clip-path: rect(0 0 100% 100%); } } </style> </head> <body> <div class="photo"><img src="image/aquaria1.jpg"></div> <div class="photo"><img src="image/aquaria2.jpg"></div> <div class="photo"><img src="image/aquaria3.jpg"></div> </body> </html>

Примечание

Браузеры Edge, Chrome и Opera поддерживают функцию rect() только для свойства offset-path.

Спецификация

CSS Shapes Module Level 1

Браузеры

116 116 102 17.2 122
116 122 78 17.2

В таблице браузеров применяются следующие обозначения.

  • — элемент полностью поддерживается браузером;
  • — элемент браузером не воспринимается и игнорируется;
  • — при работе возможно появление различных ошибок, либо элемент поддерживается с оговорками.

Число указывает версию браузреа, начиная с которой элемент поддерживается.