Способы создания кругов с помощью CSS стилей

Довольно часто при верстке веб-проекта есть потребность в создании круглых элементов: круглые кнопки, круглые миниатюры, круглые иконки, или даже целые круглые контейнеры. В некоторых случаях выйти из ситуации можно с помощью простых картинок, а иногда такой подход не помогает. Как же решить проблему, и только с помощью CSS стилей? В сегодняшнем уроке мы рассмотрим 5 основных способов, с помощью которых вы сможете создавать на своих сайтах любые круглые элементы.

 

 

Круги в CSS

Существует несколько методов создания круглых форм в HTML с помощью CSS стилей, каждый из которых имеет как свои плюсы, так и минусы. Давайте же рассмотрим самые популярные решения, которые позволят вам сделать круги в CSS.

 

 

Решение №1: радиус границы (border-radius)

Самая распространенная техника для создания кругов – это скругление всех углов на 50%. Это самый простой способ, и он отлично поддерживается браузерами. Свойство border-radius также можно применять к границам и теням.

Практический пример:

<div class="circle-block"></div>  <style>   .circle-block {    background: #ffef68;    border: 5px solid #3766ef;    border-radius: 50%;    height: 250px;    width: 250px;   }  </style>  

 

 

Если вы хотите получить не круг, а прямоугольник со скругленными краями, тогда установите для свойства border-radius значение менее 50%.

 

 

Решение №2: использование SVG

SVG может включать элемент <circle>, которому можно добавить стили, аналогично любому другому пути (path) масштабируемой векторной графики. Этот элемент имеет хорошую поддержку браузерами и эффективен для создания анимации, но для него нужно добавлять чуть больше разметки, чем для других методов. Чтобы предотвратить визуальное обрезание фигуры, убедитесь, что радиус окружности (атрибут r), меньше, чем значение viewBox в SVG.



Практический пример:

<svg viewBox="0 0 250 250" width="250" height="250">    <circle class="circle-block" cx="125" cy="125" r="120"/>  </svg>  <style>   .circle-block {    fill: #ffef68;    stroke: #3766ef;    stroke-width: 10px;   }  </style>  

 

 

Решение №3: свойство Путь обрезки (Clip Path)

Свойство Путь обрезки (clip-path) появилось в CSS совсем недавно. Поддержка браузерами приличная, но не повсеместная. Свойство clip-path не влияет на макет элемента, что означает, что оно не будет влиять на границы, но будет скрывать внешние тени. Это может быть и хорошим решением, или плохим, в зависимости от того, какую цель вы преследуете.

Практический пример:

<div class="circle-block"></div>  <style>   .circle-block {    background: #ffef68;    clip-path: circle(50%);    height: 250px;    width: 250px;   }  </style>  

 

 

Решение №4: использование радиального градиента

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

Практический пример:

<div class="circle-block"></div>  <style>   .circle-block {    background-image: radial-gradient(circle, #ffef68, #ffef68 70%, transparent 60%);    height: 250px;    width: 250px;   }  </style>  

 

 

Решение №5: обрезка контента с помощью круга в CSS

Вы можете обрезать элемент <img> по размерам круга, используя свойство border-radius.

Практический пример:

<div class="circle-block"><img src="https://picsum.photos/id/15/1920/1080" /></div>  <style>   .circle-block img {    border-radius: 50%;    object-fit: cover;    height: 250px;    width: 250px;   }  </style>  

 

 

Этот метод имеет некоторые ограничения:

  • Элемент не отзывчивый (responsive) относительно своего контейнера
  • Нельзя применить внутренние тени в элементу (хотя можно попробовать использование псевдоэлементов :after или :before)
  • Свойство подгонки объекта object-fit: cover, которое предотвращает искажение неквадратных изображений, не поддерживается в IE11

 

Ниже вы можете увидеть демо всех рассмотренных сегодня практических решений как сделать круги в CSS.


See the Pen Способы создания кругов с помощью CSS стилей by ZAnatoly
(@ZAnatoly) on CodePen.

Вот и все на сегодня! Из сегодняшней практической статьи вы узнали, как с помощью разных способов можно сделать круги в CSS. Спасибо, что читаете нас!