LBweb Łukasz Bącik
Komentarze: 0

Jak wyśrodkować element?

Pytanie zawarte w tytule może wydawać się banalne, jednak początkujący twórcy stron nierzadko mają z tym problem. W tym wpisie pokażę kilka sposobów na środkowanie elementu na stronie.

Przechodząc od razu do meritum, rozwiązanie na środkowanie elementu jest banalne 😁

<div align="center">center</div>

A teraz na poważnie 😀

Jest kilka prostych metod na środkowanie elementu, który zawarty jest w kontenerze. Elementem tym może być tekst, obrazek albo inny element (div). Przejdę do przykładów.

Wyrównanie tekstu

Załóżmy, że mamy do wyrównania przykładowy, bardzo popularny tekst:

Praesent fringilla turpis eu nisl congue porta. Ut eleifend enim sed consectetur dignissim. Cras vitae eros molestie, suscipit purus eu, posuere enim.

Lorem ipsum dolor sit amet.

Kod do środkowania elementu:

.text {
  text-align: center;
}

Powyższy kod wyrówna zawarty tekst do środka, nie ma w tym żadnej trudności, prawda?

Wyrównanie obrazka

W przypadku tekstu, nie było problemu, jednak z obrazkiem trzeba to rozwiązać nieco inaczej. W pierwszej kolejności należy zadbać o responsywność obrazka, a następnie go wyrównać względem kontenera.

.image {
  /* reposnsive */
  display: block;
  max-width: 100%;
  height: auto;

  /* centering */
  margin: 0 auto;
}

Obraz będzie utrzymany na środku kontenera oraz dopasuje się do jego wielkości.

Środkowanie elementu

W tym przypadku musimy podzielić rozwiązania, bo rozwiązań jest co najmniej cztery.

👉 display: block

Rozwiązanie blokowe polega na nadaniu właściwości blokowej elementowi i wyrównać tenże blok. Takim blokiem może być div, który będzie zawierał tekst, obraz lub kolejne bloki.

.block {
  display: block;
  margin: 0 auto;
  width: 100%;
  max-width: 400px;
  padding: 0 2rem;
}

👉 display: flex

Najpopularniejszą metodą na środkowanie elementu jest niewątpliwie flexbox. Metoda pozwala na wyrównanie elementów zarówno w poziomie jak i w pionie.

Przygotujmy sobie prostu kontener z elementami do wyśrodkowania.

<div class="container">
    <div class="item">#1</div>
    <div class="item">#2</div>
</div>

Oczywiście powyższy kod niewiele wnosi i należy go opatrzyć odpowiednimi stylami CSS.

.container {
  display: flex;
  flex-flow: row wrap;
  gap: 1rem;
  
  /* horizontal alignment */
  justify-content: center;
  /* vertical alignment */
  align-items: center;

  margin: 0 auto;
  width: 100%;
  max-width: 800px;
  padding: 0 2rem;
}

Istotne są tu linie 7. i 9., które środkują elementy odpowiednio w poziomie i w pionie.

👉 display: grid

Podobnie sprawa ma się w przypadku używania tzw. grid’a. Skorzystamy z wcześniejszego HTML’a, jednak nadamy mu style w układzie grid.

.container {
  display: grid;
  gap: 1rem;
  
  /* centering */
  justify-items: center;
  grid-template-columns: 1fr 1fr;

  margin: 0 auto;
  width: 100%;
  max-width: 400px;
  padding: 2rem;
}

👉 position: absolute

Kolejnym sposobem na środkowanie elementu jest jest pozycjonowanie absolutne, względem kontenera. Należy tu zaznaczyć, że nadrzędny kontener musi być opatrzony stylem position: relative, inaczej nasz element wyrówna się względem początku strony.

.container {
  display: flex;
  flex-flow: row wrap;
  gap: 1rem;
  position: relative;
  margin: 0 auto;
  width: 100%;
  max-width: 300px;
  height: 100px;
  border: 1px solid;
}
.item {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}

Podsumowanie

Podsumowując, środkowanie elementu jest czynnością prostą, jednak czasem można napotkać pewne trudności lub ograniczenia. Rozwiązania, które przedstawiłem powinny rozwiązać (chyba) wszystkie przypadki.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *