chevron-left chevron-right

Piotr Nalepa Frontend, architektura i AI

[CSS] Równomierne rozmieszczenie wielu elementów w jednej linii

Ta wersja
blog.piotrnalepa.pl/2010/05/11/css-rownomierne-rozmieszczenie-wielu-elementow-w-jednej-linii
Opublikowano
Autor
, Staff Software Engineer
Kategoria
CSS
Uwagi
Napisz do mnie · Napisz na X

Ten wpis ma 16 lat. Od tego czasu przeglądarki i narzędzia mogły się zmienić, więc zanim użyjesz kodu, sprawdź go z aktualną dokumentacją.

W dzisiejszym artykule postanowiłem poruszyć kwestię wyrównywania położenia elementów w jednej linii.
Z pozoru, wydaje się to banalnym problemem do rozwiązania, ale można go rozwiązać na kilka sposobów. Dzisiaj zaprezentuję sposób związany z atrybutem inline-block i white-space. Myślę, że może się to przydać Tobie.

Na początek musimy zbudować strukturę takiego obiektu na stronie. Przyjmie on postać następująca:

Przykład 1HTML
<div id="blok">
	<div class="element">
		<p><img src="1.jpg"/></p>
	</div>
 
	<div class="element">
		<p><img src="2.jpg"/></p>
	</div>
 
	<div class="element">
		<p><img src="3.jpg"/></p>
	</div>
 
	<div class="element">
		<p>Jakiś box wyśrodkowany</p>	
	</div>
</div>
Jak widać, zdefiniowałem sobie 4 elementy środkowe, z czego 3 są obrazkami, a ostatni zwykłym tekstem.
W takie elementy można umieszczać jakąkolwiek zawartość strony internetowej, bo to tutaj nie ma znaczenia co będzie w środku takiego elementu.

Kolejnym krokiem jaki musimy zrobić to zdefiniowanie stylu dla tych elementów strony, dzięki którym elementy "automagicznie" będą się ładnie środkować w obiekcie nadrzędnym. Kod CSS wygląda następująco:

Przykład 2CSS
#blok {
	background: #333;
	text-align: center;
	white-space: nowrap;
	font-size: 20px;
	letter-spacing: 35px;
	line-height: 12px;
	overflow: hidden;
	padding: 10px;
	width: 800px;
}
.element {
	width: 130px;
	height: 130px;
	border: solid 1px #ccc;
	display: inline-block;
	letter-spacing: normal;
	font-size: normal;
	white-space: normal;
	text-align: normal;
	vertical-align: middle;
}
Jeśli zależy Ci na kompatybilności z IE6 (której obsługę polecam Ci porzucić, bo to jest archaizm), to możesz dopisać do arkusza stylów następujący wpis ukierunkowany tylko dla Internet Explorera w wersji 6.
Musisz jednak wiedzieć, że taki zabieg sprawi, że arkusz CSS nie będzie się poprawnie walidował w standardzie W3C. Kod wygląda następująco:
Przykład 3CSS
.element {
	*display: inline;
	*margin: 0 20px 0 20px;
}
To by było na wszystko. Jeśli chciałbyś sprawdzić działanie takiego kodu, to zapraszam tutaj: wyśrodkowanie elementów w jednej linii

Udostępnij
Uwagi

O autorze

Staff Software Engineer

Piszę na tym blogu od 2009 roku, a strony i aplikacje webowe tworzę zawodowo od 14 lat. Obecnie w Bishop Fox prowadzę frontend platformy Cosmos, od samego początku projektu. Wcześniej pracowałem m.in. w OLX, KUDO, Auto1 i eZ Systems. Piszę tu o tym, czego nauczyłem się w praktyce: o JavaScripcie, TypeScripcie, Reakcie, CSS-ie i architekturze frontendu. Występowałem też jako prelegent na konferencjach w Polsce i Europie. Masz pytanie albo pomysł na wpis? Daj znać!