КодSEOБлогИное

Как нарисовать полукруг на CSS

Курсы HTML, CSS, PHP, JavaScript, лектор Трепачёв Д.П.

border-radius: сделать полукруглым HTML-элемент

Полукруг получается если у прямоугольника, у которого одна сторона в два раза больше другой, закруглить углы [см. генератор]. С помощью padding в процентах можно добиться пропорционального изменения высоты и ширины "резинового" блока.

Слово1 да слово2 да слово3 да слово4
<style>
.radius {
  width: 10em;
  height: 5em;  /* высота в два раза меньше ширины, иначе получится полуовал */
  border: 2px solid red;
  border-radius: 50% 50% 0 0 / 100% 100% 0 0;  /* угол состоит из половины ширины (50% от 10em = 10em : 2 = 5em) и всей высоты (100% от 5em = 5em) */
  background: mistyrose;
}
</style>

<div class="radius">текст</div>

Содержимое, выходящее за границы полукруга с overflow: hidden;, невидно.

Слово1 да слово2 да слово3 да слово4
<style>
.radius {
  width: 10em;
  height: 5em;
  border: 2px solid red;
  border-radius: 50% 50% 0 0 / 100% 100% 0 0;
  overflow: hidden;
  background: mistyrose;
}
</style>

<div class="radius">текст</div>
<style>
.radius {
  width: 10em;
  height: 15em;
  border: 2px solid red;
  border-radius: 500em 500em 0 0;  /* можно сохранить дугу для элементов разнообразных размеров, если задать очень большое значение для двух углов */
  background: mistyrose;
}
</style>

<div class="radius"></div>
<style>
.radius {
  width: 10em;
  height: 5em;
  border: 2px solid red;
  border-radius: 0 0 50% 50% / 0 0 100% 100%;
  background: mistyrose;
}
</style>

<div class="radius"></div>
<style>
.radius {
  width: 5em;  /* ширина в два раза меньше высоты, иначе получится полуовал */
  height: 10em;
  border: 2px solid red;
  border-radius: 0 100% 100% 0 / 0 50% 50% 0;
  background: mistyrose;
}
</style>

<div class="radius"></div>
<style>
.radius {
  width: 5em;
  height: 10em;
  border: 2px solid red;
  border-radius: 100% 0 0 100% / 50% 0 0 50%;
  background: mistyrose;
}
</style>

<div class="radius"></div>

clip-path: отсечь лишний фрагмент HTML-элемента

Свойство clip-path вырезает из элемента часть:

Слово1 да слово2 да слово3 да слово4
<style>
.radius {
  width: 10em;
  height: 5em;
  border: 2px solid red;
  clip-path: inset(0 round 50% 50% 0 0 / 100% 100% 0 0);  /* значения после round указывают насколько нужно округлить элемент, что равносильно записи clip-path: ellipse(50% 100% at 50% 100%); */
  background: mistyrose;
}
</style>

<div class="radius">текст</div>
Слово1 да слово2 да слово3 да слово4
<style>
.radius {
  width: 10em;
  height: 5em;
  border: 2px solid red;
  clip-path: circle(50% at center bottom);
  background: mistyrose;
}
</style>

<div class="radius">текст</div>

С помощью shape-inside

Свойство shape-inside позволяет вписать текст в окружность, даже без самой окружности, но пока не поддерживается браузерами.

текст текст текст текст текст текст текст текст текст текст
<style>
.radius {
  width: 10em;
  height: 5em;
  border: 2px solid red;
  shape-inside: inset(-2px round 50% 50% 0 0 / 100% 100% 0 0);
  background: mistyrose;
}
</style>

<div class="radius">текст</div>