
CSS позволяет формировать фигуры без изображений и SVG, используя только свойства разметки. Ключевые инструменты – border, transform, clip-path и background. При правильном сочетании этих свойств можно получить треугольники, трапеции, круги, эллипсы и более сложные формы.
Треугольники создаются за счёт прозрачных сторон рамки: при нулевой ширине и высоте элемента, но с различными значениями border-width и border-color, формируется остроугольная фигура. Круги и эллипсы строятся с использованием border-radius – значение 50% превращает квадрат в идеальный круг.
Для произвольных контуров применяется clip-path с типами фигур polygon, circle и inset. Этот способ удобен при создании сложных геометрических узоров и декоративных элементов без привлечения графики. Оптимизация заключается в использовании минимального числа HTML-элементов и комбинировании псевдоэлементов ::before и ::after.
Такой подход уменьшает размер страницы, ускоряет загрузку и позволяет гибко изменять форму с помощью CSS-анимации или медиазапросов. Геометрия на чистом CSS особенно полезна для интерфейсных иконок, стрелок, маркеров и декоративных блоков, где важна масштабируемость без потери качества.
Формирование квадратов и прямоугольников с использованием свойств width и height
Квадраты и прямоугольники в CSS создаются за счёт указания фиксированных значений свойств width и height. Для квадрата эти значения должны быть равны, например: width: 100px; height: 100px;. При разных величинах формируется прямоугольник. Единицы измерения могут быть любыми – пиксели, проценты, em или rem, в зависимости от требуемой адаптивности.
Чтобы фигура отображалась, необходимо задать цвет фона с помощью background-color или границы через border. Пример: div { width: 120px; height: 80px; background-color: #4A90E2; }. Элемент примет форму прямоугольника с заданными размерами.
Для масштабируемых элементов целесообразно использовать относительные единицы, например: width: 50vw; height: 25vw;. Такой подход сохраняет пропорции при изменении ширины окна. Если требуется квадрат, можно применять свойство aspect-ratio: 1 / 1; вместо жёсткой установки высоты, что удобно для адаптивной вёрстки.
При создании фигур без текста и контента лучше использовать блочные элементы с display: block;. Если элемент находится внутри контейнера с гибкой разметкой, необходимо контролировать поведение размеров через flex-shrink: 0; или min-width/min-height, чтобы фигура не искажалась.
Создание кругов и овалов через border-radius

Свойство border-radius позволяет формировать плавные закругления углов, из которых можно получить как круг, так и овал. Ключевое условие – соотношение ширины и высоты элемента.
- Круг: элемент должен иметь равные значения
widthиheight. Применениеborder-radius: 50%;превращает квадрат в идеальный круг. - Овал: используется при неравных размерах сторон. Например,
width: 200px;,height: 100px;иborder-radius: 50%;создают горизонтальный овал.
При необходимости контроля над каждой осью можно задавать отдельные значения:
border-radius: 50% / 30%;
Первое значение определяет горизонтальный радиус, второе – вертикальный. Это позволяет формировать вытянутые или сплюснутые формы.
- Для четких пропорций используйте относительные единицы (
%), чтобы форма сохранялась при масштабировании. - Если необходимо частичное скругление, можно комбинировать значения, например
border-radius: 50% 0 50% 0;– получится форма с диагональными скруглениями. - Свойство работает со всеми блочными элементами, включая
<div>и<button>.
Для центрирования круга на странице рекомендуется использовать display: flex; или margin: auto; в контейнере. Это обеспечивает точное позиционирование без дополнительных оберток.
Построение треугольников при помощи прозрачных границ
Треугольник в CSS можно создать без использования изображений, используя свойство border. Элемент без ширины и высоты формирует треугольник за счёт разных цветов и прозрачности границ.
Пример прямоугольного треугольника, направленного вверх:
.triangle-up {
width: 0;
height: 0;
border-left: 50px solid transparent;
border-right: 50px solid transparent;
border-bottom: 100px solid #007ACC;
}
Основной принцип: одна из границ окрашивается, остальные становятся прозрачными. Направление треугольника зависит от расположения цветной стороны. Например, если задать цвет border-top, треугольник будет направлен вниз.
Чтобы изменить размер, достаточно корректировать толщину границ. Чем больше значение границы, тем крупнее фигура. Для равносторонних треугольников следует подобрать соотношение ширины боковых и основной границ.
С помощью псевдоэлементов можно создавать более сложные формы, например стрелки. Для этого к основному элементу добавляют ::before или ::after с аналогичными свойствами, меняя цвет и размер.
Фигуры со скруглёнными и обрезанными углами через clip-path
Свойство clip-path позволяет создавать элементы с любыми типами углов – от мягко скруглённых до геометрически обрезанных. В отличие от border-radius, который ограничен радиусами, clip-path формирует точный контур с помощью координат и функций, задающих форму.
Для обрезанных углов применяют функцию polygon(). Например, квадрат с усечёнными углами можно задать так:
clip-path: polygon(10% 0, 90% 0, 100% 10%, 100% 90%, 90% 100%, 10% 100%, 0 90%, 0 10%);
Проценты определяют смещение точек от границ блока. Изменяя эти значения, можно контролировать глубину среза.
Для плавных углов используют path() с описанием кривых по синтаксису SVG. Пример скруглённого прямоугольника:
clip-path: path("M10 0 H90 Q100 0 100 10 V90 Q100 100 90 100 H10 Q0 100 0 90 V10 Q0 0 10 0 Z");
Кривая Q задаёт радиус скругления, а комбинация прямых и кривых сегментов позволяет создавать фигуры с разными типами углов. Такой подход особенно удобен при необходимости асимметричных скруглений.
Чтобы форма сохранялась при изменении размера блока, применяйте проценты вместо пикселей и фиксируйте aspect-ratio. Для динамического дизайна можно использовать clip-path: inset() с параметрами round для плавных углов, например:
clip-path: inset(5% round 15%);
Совмещение clip-path с анимацией transition или @keyframes позволяет изменять радиус скругления или глубину среза без использования дополнительных элементов.
Рисование многоугольников с использованием свойства polygon()
Свойство clip-path: polygon() позволяет создавать точные многоугольники в CSS без использования графических элементов. Внутри функции polygon() задаются координаты вершин относительно блока в процентах или пикселях, например:
clip-path: polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%); – формирует ромб.
Для многоугольников с большим числом вершин рекомендуется придерживаться порядка обхода точек по часовой стрелке или против, чтобы форма корректно отображалась в браузерах.
Пример создания треугольника и шестиугольника с использованием polygon():
| Форма | CSS |
|---|---|
| Треугольник | clip-path: polygon(50% 0%, 0% 100%, 100% 100%); |
| Шестиугольник | clip-path: polygon(25% 0%, 75% 0%, 100% 50%, 75% 100%, 25% 100%, 0% 50%); |
Для точной подгонки формы под конкретный размер блока координаты лучше задавать в процентах. Это обеспечивает адаптивность при изменении ширины или высоты элемента.
Свойство clip-path поддерживает анимацию. Плавное изменение вершин позволяет создавать динамичные фигуры. Например, переход от квадрата к ромбу:
clip-path: polygon(0% 0%, 100% 0%, 100% 100%, 0% 100%) → polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%);
Для проверки точности многоугольника удобно использовать онлайн-генераторы clip-path, которые сразу предоставляют координаты вершин и визуальное отображение формы.
Важно: при использовании сложных форм с большим числом вершин стоит следить, чтобы координаты не пересекались, иначе фигура может обрезаться некорректно.
Построение фигур с градиентами вместо сплошного цвета
Градиенты в CSS позволяют создавать плавные переходы цветов внутри геометрических фигур, добавляя глубину и динамику без использования изображений. Для построения фигур с градиентами применяются свойства background и background-image вместе с формами, созданными через border-radius или псевдоэлементы.
Прямоугольники и квадраты:
- Используйте
linear-gradientдля линейных переходов:background: linear-gradient(45deg, #ff6b6b, #f06595);. - Для диагональных или сложных направлений градиента изменяйте угол: 0deg – вертикальный, 90deg – горизонтальный.
- Можно комбинировать несколько градиентов через запятую, чтобы создавать сложные визуальные эффекты.
Круги и овалы:
- Примените
border-radius: 50%для круглой формы. - Используйте
radial-gradientдля центровых переходов:background: radial-gradient(circle, #ffd43b, #ffa94d);. - Для эллиптических градиентов указывайте размеры:
radial-gradient(ellipse 70% 50%, #74c0fc, #4dabf7).
Треугольники:
- Создайте фигуру через границы:
width: 0; height: 0; border-left: 50px solid transparent; border-right: 50px solid transparent; border-bottom: 100px solid red;. - Для градиента используйте псевдоэлемент
::beforeсlinear-gradientи обрезкой черезclip-path: polygon(50% 0%, 0% 100%, 100% 100%).
Применение прозрачности и множественных слоёв:
- С помощью
rgbaилиhslaможно добиться плавного наложения цветов. - Используйте несколько градиентов одновременно для имитации света и тени:
background: linear-gradient(rgba(255,0,0,0.5), transparent), linear-gradient(45deg, #f06595, #ff6b6b);.
Рекомендации:
- Сохраняйте пропорции градиента относительно размера фигуры, чтобы при изменении размеров переход не искажался.
- Для кругов и эллипсов лучше использовать
radial-gradient, для прямоугольников и треугольников –linear-gradient. - Комбинируйте
clip-pathс градиентами для создания нестандартных форм. - Тестируйте отображение градиентов в разных браузерах, особенно при использовании сложных многоцветных переходов.
Анимация и трансформация геометрических фигур с помощью CSS-трансформаций

Для анимации геометрических фигур применяются свойства transform и transition. С их помощью можно вращать (rotate()), масштабировать (scale()), смещать (translate()) и искажать (skew()) элементы без изменения их исходной разметки.
Простейший пример: вращение квадрата на 360° за 2 секунды:
div { width: 100px; height: 100px; background: red; transition: transform 2s; } div:hover { transform: rotate(360deg); }
Для комплексных эффектов используют transform-origin, задавая точку поворота. По умолчанию центр элемента, но для вращения вокруг угла: transform-origin: top left;.
Множественные трансформации объединяются через пробел: transform: translateX(50px) rotate(45deg) scale(1.5);. Порядок операций влияет на результат: смещение до вращения и после создают разные визуальные эффекты.
CSS-анимации (@keyframes) позволяют создавать повторяющиеся движения без участия пользователя. Пример: плавное колебание треугольника по оси X:
@keyframes swing { 0% { transform: translateX(0); } 50% { transform: translateX(50px); } 100% { transform: translateX(0); } } div { animation: swing 3s infinite ease-in-out; }
Для сохранения четкости фигур на высоких масштабах рекомендуется использовать transform: scale() вместо изменения width и height. Это снижает перерисовку браузера и повышает производительность.
Сочетание transition и @keyframes позволяет комбинировать интерактивные и автоматические анимации. Например, при наведении на круг он может увеличиваться и одновременно вращаться, создавая динамичный эффект без JavaScript.
Для сглаживания движений применяют transition-timing-function или в @keyframes кривые Безье: cubic-bezier(0.4, 0, 0.2, 1), что обеспечивает более естественные анимации сложных фигур.
При работе с множеством элементов стоит использовать will-change: transform;, чтобы браузер заранее оптимизировал рендеринг и снизил нагрузку на GPU.
Вопрос-ответ:
Как создать простой квадрат с помощью CSS?
Чтобы создать квадрат, достаточно использовать элемент с одинаковой шириной и высотой, а также задать фон. Например, с помощью CSS: width: 100px; height: 100px; background-color: red;. Это создаст красный квадрат размером 100 на 100 пикселей. Можно также добавлять рамки и тени для визуального эффекта.
Можно ли с помощью CSS сделать треугольник?
Да, треугольники создаются с помощью границ. У элемента задают нулевую ширину и высоту, а затем оставляют видимой только одну из границ. Например: width: 0; height: 0; border-left: 50px solid transparent; border-right: 50px solid transparent; border-bottom: 100px solid blue;. В результате получится синий треугольник, направленный вершиной вверх.
Как сделать круг с помощью CSS?
Круг создается с помощью свойства border-radius. Для элемента с одинаковой шириной и высотой достаточно написать border-radius: 50%;. Например, для круга диаметром 80 пикселей: width: 80px; height: 80px; border-radius: 50%; background-color: green;. Круг получится идеально круглым, и его цвет можно менять по желанию.
Можно ли создавать сложные фигуры, объединяя несколько CSS-элементов?
Да, сложные фигуры создаются с помощью сочетания нескольких элементов, каждый из которых имеет свои размеры, цвета и границы. Например, можно создать звезду или сердце, используя несколько треугольников и кругов, расположенных с помощью position: absolute;. Такой подход позволяет формировать фигуры, которые невозможно получить одним элементом.
Какие свойства CSS чаще всего используют для фигур кроме размеров и цвета?
Для создания и стилизации фигур часто применяют border-radius для скруглений, border для контуров, transform для вращения, масштабирования или наклона, clip-path для обрезки по форме, а также box-shadow для добавления объема. Сочетание этих свойств позволяет получать разнообразные формы без использования изображений.
Как создать треугольник с помощью CSS без использования изображений?
Треугольник можно сделать с помощью свойства border. Основная идея заключается в том, что вы задаёте элементу нулевую ширину и высоту, а затем устанавливаете разные цвета и размеры для границ. Например, чтобы получить треугольник, направленный вверх, нужно оставить прозрачными боковые и нижнюю границу, а верхнюю границу окрашенной. Этот подход позволяет создавать треугольники любой ориентации и размера, изменяя только параметры границ.
Можно ли с помощью CSS создать круг или овал и чем отличаются эти методы?
Да, круг и овал создаются с помощью свойства border-radius. Для круга достаточно сделать ширину и высоту равными и задать border-radius: 50%. Для овала ширина и высота различаются, а border-radius: 50% создаёт вытянутую форму. Важно, что элементы остаются полностью масштабируемыми и не требуют изображений, что облегчает адаптацию под разные размеры экранов.
