Dziś o listach. Listy niesortowane (<ul/>) są najczęściej wykorzystywanym typem wyliczeń w sieci, jeśli nie liczyć bulletów wstawianych jako <img/> na początku każdego akapitu (co jest naturalnie bez sensu).

Pierwszy kłopot z listami polega na tym, że każda przeglądarka w inny sposób implementuje wcięcia. Jedne robią to za pomocą atrybutu padding, inne za pomocą margin. Jedyna uniwersalna metoda, to wyzerować jeden, a określić drugi parametr:

ul.naszaLista li
{
	margin: 0;
	padding: 2px 2px 2px 20px;
}

Druga sprawa to odległość pomiędzy bulletem, a tekstem. Teoretycznie istnieje w CSS atrybut marker-offset, ale w praktyce nie istnieje dla niego wsparcie. W związku z tym, najlepszym wyjściem jest stworzyć własny obrazek dla bulleta i zadeklarować go jako background dla elementu listy:

ul.naszaLista li
{
	background: url('img/bullet.png') no-repeat 0% 50%;
	margin: 0;
	padding: 2px 2px 2px 20px;
}

W tym wypadku lewy padding (kolejność podawania parametrów jest zdefiniowana według kierunku ruchu wskazówek zegarka - góra, prawo, dół, lewo) ustawiamy w tym przypadku na szerokość obrazka + wymaganą odległość pomiędzy obrazkiem a tekstem.

Na koniec wspomnę jeszcze, że IE ma problem z połączeniem letter-spacing i line-height. W przypadku, kiedy zostaną zadeklarowane oba, IE przestanie pokazywać co drugi znak łamania wiersza (<br/>). Wspominałem o tym w lutym, kiedy błąd został przypadkowo odkryty przez naszego klienta, który nadużywał znaczników <br/> do formatowania tekstu na stronie. Do dziś nie znaleźliśmy obejścia tego problemu, na szczęście letter-spacing jest relatywnie rzadko używany.