Использование обрезки в CSS может помочь нам отойти от всего в наших проектах, что выглядит как коробка. Используя различные базовые фигуры или SVG, вы можете создать контур обрезки. Затем вырежьте части элемента, которые вы не хотите показывать.
Все элементы на веб-страницах определяются внутри прямоугольного блока. Однако это не значит, что мы должны сделать все похожим на блок. Вы можете использовать свойство CSS clip-path , чтобы обрезать части изображения или другого элемента, чтобы создать интересные эффекты. 
 В приведенном выше примере изображение воздушного шара является квадратным ( источник ). Используя clip-path и базовое значение формы circle() дополнительное небо вокруг воздушного шара обрезается, оставляя круглое изображение на странице.
 Поскольку изображение является ссылкой, вы можете увидеть кое-что еще о свойстве clip-path . Только видимая область изображения может быть нажата, поскольку события не срабатывают на скрытых частях изображения.
 Обрезку можно применить к любому элементу HTML, не только к изображениям. Существует несколько различных способов создания clip-path , в этом посте мы рассмотрим их.
Совместимость с браузерами
Для устаревших браузеров запасным вариантом может быть разрешение браузеру игнорировать свойство clip-path и показывать необрезанное изображение. Если это проблема, вы можете проверить наличие clip-path в запросе на функцию и предложить альтернативный макет для неподдерживаемых браузеров.
@supports(clip-path: circle(45%)) {
  /* code that requires clip-path here. */
}
Базовые формы
 Свойство clip-path может принимать несколько значений. Значение, использованное в исходном примере, было circle() . Это одно из основных значений формы, определенных в спецификации CSS Shapes . Это означает, что вы можете обрезать область, а также использовать то же значение для shape-outside , чтобы текст обтекал эту форму. 
Полный список основных форм:
 inset()
 Значение inset() вставляет обрезанную область от края элемента и может передавать значения для верхнего, правого, нижнего и левого краев. Также можно добавить border-radius для изгиба углов обрезанной области с помощью ключевого слова round .
 В моем примере у меня есть два блока, оба с классом .box . Первый блок не имеет обрезки, второй обрезан с использованием значений inset() . 
 circle()
 Как вы видели, значение circle() создает круглую обрезанную область. Первое значение — это длина или процент, а также радиус круга. Второе необязательное значение позволяет вам задать центр круга. В примере ниже я использую ключевые значения, чтобы задать мой обрезанный круг вверху справа. Вы также можете использовать длины или проценты. 
Остерегайтесь плоских краев!
Имейте в виду, что со всеми этими значениями форма будет обрезана полем margin на элементе. Если вы создадите круг на изображении, и эта форма будет выходить за пределы естественного размера изображения, вы получите плоский край.

circle(50%) . Поскольку изображение не квадратное, мы задеваем поле поля сверху и снизу, и круг обрезается. ellipse()
 Эллипс по сути является сплющенным кругом и поэтому действует очень похоже на circle() но принимает радиус для x и радиус для y, а также значение центра эллипса. 
 polygon()
 Значение polygon() может помочь вам создавать довольно сложные фигуры, определяя столько точек, сколько вам нужно, задавая координаты каждой точки. 
 Чтобы помочь вам создавать многоугольники и увидеть, что это возможно, воспользуйтесь Clippy , генератором clip-path , а затем скопируйте и вставьте код в свой собственный проект.
Формы из значений ящиков
 Также в CSS Shapes определены фигуры из значений box . Они относятся к CSS Box Model — content box, padding box, border box и margin box со значениями ключевых слов content-box , border-box , padding-box и margin-box .
Эти значения могут использоваться отдельно или вместе с базовой формой для определения справочного поля, используемого формой. Например, следующий код обрезает форму по краю содержимого.
.box {
  clip-path: content-box;
}
 В этом примере круг будет использовать в качестве справочного поля content-box , а не margin-box (которое установлено по умолчанию).
.box {
  clip-path: circle(45%) content-box;
}
 В настоящее время браузеры не поддерживают использование значений box для свойства clip-path . Однако они поддерживаются для shape-outside .
Использование элемента SVG
 Для большего контроля над обрезанной областью, чем это возможно с базовыми фигурами, используйте элемент SVG clipPath . Затем ссылайтесь на этот идентификатор, используя url() в качестве значения для clip-path . 
Анимация вырезанной области
 Переходы и анимации CSS можно применять к clip-path для создания интересных эффектов. В следующем примере я анимирую круг при наведении, переходя между двумя кругами с разным значением радиуса. 
Существует множество креативных способов использования анимации с обрезкой. Анимация с помощью clip-path на CSS Tricks проходит через некоторые идеи.
Фото Мэтью Генри на Burst.
