Jak pozbyć się odstępu/spacji pomiędzy elementami inline-block?

Problem - odstęp/spacja pomiędzy elementami z display: inline-block

Załóżmy, że przy tworzeniu nawigacji dla swojej strony zdecydowałeś się skorzystać z korzyści jakie daje display: inline-block.

O jakich korzyściach inline-block mówię?

  • Elementy układają się obok siebie, w jednej lini (przewaga nad display: block).
  • Elementom można nadać szerokość i wysokość (przewaga nad display: inline).
  • Elementy można w prosty sposób wyśrodkować w poziomie dzięki ustawieniu ich rodzicowi text-align: center.

Zatem zobaczmy co nam z tego wyszło:

Ogólnie wygląda to całkiem nieźle, jednak wcale nie planowałem odstępu pomiędzy "guzikami". Nigdzie w kodzie CSS nie wymusiłem odstępu w postaci chociażby marginesu.

Skąd zatem wziął się nasz niechciany odstęp?

Otóż wynika on z natury display: inline, bo przecież nasz dispaly: inline-block jest hybrydą inline oraz block. Akurat w kwestii naszego niechcianego odstępu - ujawniła nam się cecha pochodząca od inline.

Czyli nic się nie da zrobić, tak już jest i musimy się z tym pogodzić?

Spokojnie, wysztko się da! Jeszcze nie doszliśmy do sedna sprawy, czyli w jakich warunkach ta cecha inline się ujawnia?

Inline jest trybem stworzonym z myślą o tekście. Jeżeli w tekście pojawia się spacja to... oczywiście widzisz niewielki odstęp na ekranie pomiędzy słowami.

Link z naszego przykładu czyli <a href="">Start</a> ma ustawiony display: inline-block, czyli po części jest traktowany przez przeglądarkę jako tekst.

Ważne żebyś zrozumiał, że nie chodzi mi o to, że słowo Start jest traktowane jako tekst - to jest jasna sprawa. Chodzi mi o cały element HTML <a></a>.

Zatem jeśli pomiędzy jednym elementem <a></a> a drugim elementem <a></a> pojawi się spacja w kodzie HTML, to na ekranie również pojawi się spacja.

No dobra, zatem prześledźmy nasz kod HTML w poszukiwaniu spacji pomiędzy linkami - czegoś w stylu <a>...</a> <a></a>.

Efekt?

Nie ma żadnej spacji! Wniosek? Mój przydługi wywód był bezsensu ;).

Na szczęście nie! :)

Co prawda nie ma spacji, ale jest "niewidzialny" znak nowej linii pomiędzy linkami (popularnie zwany "enterem").

Bo przecież nasz kod nie wygląda tak:

<a>...</a><a>...</a>
   

tylko tak:

<a>...</a>
<a>...</a>
   

Zapewne wiesz o tym, że przeglądarka wyświetli na ekranie "nową linię" jeśli użyjesz znacznika <br>. Jeśli użyjesz tylko "entera" w kodzie HTML, to przeglądarka go potraktuje jako spację, a nie nową linię.

Z resztą nie musisz mi wierzyć na słowo, o to dowód:

Dokładnie to samo się dzieje z naszą nawigacją. "Entery" odzielające linki w kodzie HTML, są wyświetlane jako spacje przez przeglądarkę.

Zatem wystarczy się pozbyć enterów z kodu HTML i wszystko powinno działać.

Do dzieła!

Rozwiązanie

Podejście pierwsze

Zacznijmy od dosłownie pozbycia się "enterów" z naszego kodu:

Udało się!

Jednak jest jeden minus tego rozwiązania. Spójrz jak wygląda nasz kod HTML... Niezbyt czytelny.

Wolałbym jednak poszukać innego rozwiązania, które będzie wolne od tej wady. Przecież czytelny kod to bardzo ważna kwestia w codziennej pracy programisty.

Podejście drugie

W drugim sposobie wykorzystamy sprytny fortel, a mianowicie zmniejszymy rozmiar czcionki dla naszych "enterów" do rozmiaru niewidocznego czyli font-size: 0;, a tekst na którym nam zależy ustawimy na font-size: 16px;.

Świetnie! Udało nam się upiec dwie pieczenie na jednym ogniu!

Oczywiście są jeszcze inne rozwiązania.

Moglibyśmy na przykład użyć flexboxa, co z resztą w kwestii naszej nawigacji miałoby wiele zalet.

Moglibyśmy równie dobrze użyć display: block w połączeniu z float: left, pogimnastykować się trochę z wyśrodkowaniem i też by dało radę.

Jednak celem niniejszego artykułu nie było znalezienie najlepszego sposobu na stworzenie nawigacjii na stronie internetowej.

Chodziło o rozwiązanie konkretnego problemu, którym w tym przypadku był niechciany odstęp pomiędzy elementami z display: inline-block.

Jeśli natkniesz się na ten problem, a z pewnością nadejdzie taki dzień, to już doskonale wiesz jak go rozwiązać :).

Autor
Karol Dworakowski
Programista, który odkrył w sobie pasję dzielenia się wiedzą.
Kontakt

Podobał Ci się ten artykuł?

Jeśli tak, to zapisz się do mojego newslettera!
Otrzymasz informacje o najnowszych wpisach, które poszerzą Twoją programistyczną wiedzę i przybliżą Cię do celu.
*Zero spamu, zero sztuczek - Twój adres jest bezpieczny!