Kolejna umiejętność, jaką powinniśmy posiadać, to efektywnie tworzenie półkola. Przyda się w wielu elementach – choćby animacjach ładowania z obracającym się kółkiem.

Na początku zdefiniujmy sobie nasze półkole w HTML:

<div class="semi-circle"></div>

Teraz zróbmy pełne koło w CSS, które będzie dla nas punktem wyjścia:

.semi-circle {
   width: 200px;
   height: 200px;
   border-radius: 50%;
   background-color: teal;
}

Tak zapisany border-radius jest zapisem skróconym – pełen zapis wygląda tak:

.semi-circle {
   width: 200px;
   height: 200px;
   border-radius: 50% 50% 50% 50%;
   background-color: teal;
}

Mamy tutaj, w tej kolejności (ruch wskazówek zegara):

  • lewe-górne zaokrąglenie
  • prawe-górne zaokrąglenie
  • prawe-dolne zaokrąglenie
  • lewe-dolne zaokrąglenie

Możemy teraz wejść na stronę, odpalić devtoolsy i zmniejszać strzałkami prawe-dolne oraz lewe-dolne aż do zera. Będziemy w czasie rzeczywistym widzieć, jak dolne zaokrąglenia się prostują, dzięki czemu lepiej to zrozumiemy, zwłaszcza jeżeli jesteśmy wzrokowcami.

Nowy zapis wygląda tak:

.semi-circle {
   width: 200px;
   height: 200px;
   border-radius: 50% 50% 0% 0%;
   background-color: teal;
}

Element wygląda, jak półkole osadzone na prostokącie. Jakiś domek albo świątynia, coś w ten deseń. Teraz wystarczy tylko dostosować wysokość elementu (połowa szerokości) aby dostać półkole.

.semi-circle {
   width: 200px;
   height: 100px;
   border-radius: 50% 50% 0% 0%;
   background-color: teal;
}

Jak widać – nie do końca. Te procenty psują wszystko. Najwidoczniej (sam tego nie wiem) te 50% oznacza 50% wysokości, nie szerokości. Zastanówmy się, jaka wartość bezwzględna (w pikselach) znajdowała się tam w poprzednim przykładzie? Element 200px na 200px, więc niezależnie w oparciu o co on te procenty wylicza, było tam… 100px.

.semi-circle {
   width: 200px;
   height: 100px;
   border-radius: 100px 100px 0 0;
   background-color: teal;
}

Mamy nasze półkole. Takie ćwiczenia CSSowe radzę wykonywać regularnie – zwłaszcza, jeżeli nie jesteśmy mistrzami frontendu. Właśnie dlatego. Nie zajmują dużo czasu, a potrafią wyrobić nasze umiejętności CSSowe, które bardzo się przydają.